所以我将其作为输出,我只需要catalog_id
,因为某些 catalog_id 是重复的。
db.catalog_product.find({product_id:{$in:["5a818d72590b65042559e2d4","5a818d9a590b65042649d966","5a81dd83590b65042559e2dd"]}},{catalog_id:true}).pretty();
{
"_id" : ObjectId("5a818d72590b65042559e2d5"),
"catalog_id" : "5a8127ab590b65042649d942"
}
{
"_id" : ObjectId("5a818d72590b65042559e2d6"),
"catalog_id" : "5a8127ab590b65042649d942"
}
{
"_id" : ObjectId("5a818d9a590b65042649d967"),
"catalog_id" : "5a8127ab590b65042649d942"
}
{
"_id" : ObjectId("5a818d9a590b65042649d968"),
"catalog_id" : "5a8127ab590b65042649d942"
}
{
"_id" : ObjectId("5a81dd83590b65042559e2de"),
"catalog_id" : "5a813778590b65042649d94c"
}
答案 0 :(得分:0)
为什么不尝试汇总?您可以根据键来分组项目,即所有不同的项目。示例查询看起来像,
db.catalog_product.aggregate([
{$match: {product_id: {$in:["5a818d72590b65042559e2d4","5a818d9a590b65042649d966","5a81dd83590b65042559e2dd"]}},
{"$group": { "_id": "$catalog_id", "cid": {$first: "$_id"} }, //distinct here
{$project: { "_id": '$cid', "catalog_id": "$_id"}}
]).pretty();
注意:这是查找不同项目的备用聚合方式。如果您正在寻找更清洁的方式,请在评论中使用 veeram 解决方案。