在mongodb搜索重量

时间:2018-03-19 10:06:16

标签: mongodb mongodb-query aggregation-framework nosql-aggregation

有没有办法可以在没有索引的情况下为Mongo-db中的特定字段添加weight-age?

文件格式:

{
    "_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"
}

在如上所述的文档中,查找查询应按以下顺序基于优先级工作:

  1. 项目名称
  2. 价格(最低)
  3. 添加日期(最新)
  4. 使用"项目A"查找查询应该首先返回第二个条目,因为它是价格较低的条目,尽管第一个条目是最新的。有没有办法在没有索引的情况下在搜索查询中为字段添加权重(重要性)。

    我正在寻找像

    中的重量字段搜索
    db.blog.createIndex( 
        { 
            content: "text", 
            keywords: "text", 
            about: "text" 
        }, 
        { 
            weights: { 
                content: 10, 
                keywords: 5 
            }, 
            name: "TextIndex" 
         } 
    )
    

    但没有创建索引。

2 个答案:

答案 0 :(得分:0)

使用聚合框架来计算您的数据并根据您的需求对其进行排序

答案 1 :(得分:0)

使用以下内容:

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"}类似的语法来完成。虽然创建索引是一种更优化的方式。