我有一个收藏:
{
"_id": {
"$oid": "5f84ffad51d91fa6247b17e6"
},
"chat_id": 1,
"status": true,
"members": [{
"user_id": 2436324243,
"rank": 1
}, {
"user_id": 2346246243,
"rank": 2
}, {
"user_id": 2634243643,
"rank": 1
}, {
"user_id": 2634634234,
"rank": 0
}],
"groups": [...]
},
{
"_id": {
"$oid": "5f84ffad51d91fa6247b17e7"
},
"chat_id": 2,
"status": true,
"members": [{
"user_id": 1526236,
"rank": 1
}, {
"user_id": 13242664,
"rank": 2
}, {
"user_id": 12315161,
"rank": 1
}, {
"user_id": 21362463,
"rank": 0
}],
"groups": [...]
}
我想从chat_id = 2
一组对象members
中获取members.rank >= 1
,对于上述数据,答案应该如下所示:
{ "members" : [{
"user_id": 1526236,
"rank": 1
}, {
"user_id": 13242664,
"rank": 2
}, {
"user_id": 12315161,
"rank": 1
}]
}
试过了
db.chats.find({"chat_id": 2, "members": {"$elemMatch": {"rank" : {"$gte": 1}}}}, {"_id": 0, "members.$":1})
但它只返回一个对象