已关闭:我想在我的聚合查询中返回ID列表,我是mongodb的新手

时间:2016-05-03 21:34:17

标签: mongodb

我正在使用以下聚合查询获取餐馆匹配列表关键字搜索“中国”在传递的ID列表中,

db.business.aggregate([  
   {  
      $match:{  
         $text:{  
            $search:"chinese"
         }
      }
   },
   {  
      $match:{  
         "_id":{  
            $in:[  
               ObjectId("571453a82ece1392240f7b91"),
               ObjectId("5714537b2ece1392240f7b8c"),
               ObjectId("5714539a2ece1392240f7b8e"),
               ObjectId("571453962ece1392240f7b8d")
            ]
         }
      }
   },

])

以下是mongodb中的示例数据。

{
    "_id" : ObjectId("571453b32ece1392240f7b93"),
    "_class" : "com.halal.sa.data.entities.Business",
    "name" : "Chillies",
    "description" : "nice restaurant",
    "cuisine" : [ 
        "veg-nonveg", 
        "chinese", 
        "kabab"
    ],
    "address" : {
        "streetAddress" : "1000 bentley road",
        "city" : "marietta",
        "pincode" : 30067,
        "landmark" : "near delk road",
        "location" : {
            "type" : "Point",
            "coordinates" : [ 
                -84.4774305, 
                33.9202151
            ]
        }
    },
    "phone" : 123,
    "email" : "my@email.com",
    "ownerEmail" : "test@email",
    "status" : "2",
    "website" : "test.com",
    "authenticity" : "1"
}

请让我知道确切的修改后的聚合查询,它只返回_ids列表,而不是从集合中返回所有文档。提前致谢

2 个答案:

答案 0 :(得分:0)

我得到它只是在查询中使用$项目,就是这样: - )

db.business.aggregate([   
    { $match: { $text: { $search: "chinese" } } },
   { $match: { "_id": {$in : [ObjectId("571453a82ece1392240f7b91"), ObjectId("5714537b2ece1392240f7b8c"),ObjectId("5714539a2ece1392240f7b8e"),ObjectId("571453962ece1392240f7b8d")]} } },       
   {$project: {"_id": "$_id"}}
])

答案 1 :(得分:0)

我看到实际上只有一个ID数组的方式(就像您在find中使用distinct一样)将是通过使用$ group

db.business.aggregate([
  {  
    $match:{  
      $text:{  
         $search:"chinese"
      }
    }
  },
  {  
    $match:{  
      "_id": {  
        $in: [  
           ObjectId("571453a82ece1392240f7b91"),
           ObjectId("5714537b2ece1392240f7b8c"),
           ObjectId("5714539a2ece1392240f7b8e"),
           ObjectId("571453962ece1392240f7b8d")
        ]
       }
    }
  },
  { $group: { _id: null, ids: { $push: "$$ROOT._id" } } }
]);

结果基本上会给你类似的东西

[
  {
    _id: null,
    ids: [/* Your ids */],
  }
]