根据需要对其进行排序
有没有办法在不索引的情况下将权重年龄添加到Mongo-db中的特定字段?
文档格式:
{
"_id" : "55b3551164518e48",
"item" : "Item A",
"price": 400,
"added_date": "2015-07-22",
"seller": "Seller A"
},{
"_id" : "55b3551164518e49",
"item" : "Item A",
"price": 200,
"added_date":"2015-06-21",
"seller": "Seller B"
}
在类似上述的文档中,查找查询应按以下顺序基于优先级工作:
- 项目名称
- 价格(最低(
- 上架日期(最新(
带有"项目 A"的查找查询应该以首先返回第二个条目的方式工作,因为它是价格较低的条目,尽管第一个条目是最新的。有没有办法在不索引的情况下向搜索查询中的字段添加权重(重要性(。
我正在寻找像
db.blog.createIndex(
{
content: "text",
keywords: "text",
about: "text"
},
{
weights: {
content: 10,
keywords: 5
},
name: "TextIndex"
}
)
但不创建索引。
使用聚合框架来计算数据并
使用以下命令:
db.example.aggregate([
$sort: {item: 1, price: -1, added_date: 1},
$group: {_id: "$item", price: {$first: "$price"}, added_date: {$first: "$added_date"}}
]);
分组后所需的字段需要单独添加,并且可以使用与 price: {$first: "$price"}
类似的语法来完成。尽管创建索引是一种更优化的方法。