我有以下文件的MongoDB集合:
db.inventory.insertMany([
{ "_id" : 1,"uid":"b123","name" : "test","lang" : "ja-jp"},
{ "_id" : 2,"uid":"b123","name" : "test","lang" : "en-us"},
{ "_id" : 3,"uid":"b123","name" : "demo","lang" : "ja-jp"},
{ "_id" : 4,"uid":"b123","name" : "demo","lang" : "en-us"},
{ "_id" : 5,"uid":"b456","name" : "test","lang" : "en-us"},
{ "_id" : 6,"uid":"b456","name" : "demo","lang" : "en-us"}
])
并希望得到以下答复
[{uid:"b123"}]
如何使用Mongo聚合查询获得结果?还是有其他选择?
答案 0 :(得分:0)
我不确定我是否理解这个问题,但是您可以执行以下几项操作来返回uid字段:
db.inventory.find({
uid: 'b123'
}).project({
uid: $uid
});
这将产生{uid: 'b123'}
的列表。
如果只需要唯一的结果,则可以将$group
与aggregate一起使用,如下所示:
db.inventory.aggregate([
{
$match: {
uid: 'b123'
}
},
{
$group: {
_id: {
uid: '$uid'
}
}
},
{
$group: {
_id: 1,
result: {
$addToSet: '$_id'
}
}
}
]);
请注意,第二个$group
的目的是将它们全部收集在一个数组下。
响应将是这样的:
{
_id: 1,
result: [
{uid: 'b123'}
]
}
希望可以回答您的问题