【发布时间】:2020-10-13 07:51:04
【问题描述】:
我收藏了chats。每个chat 都有一个members 的列表(数组)。每个member 都有两个字段:user_id 和rank(都是整数)。给定chat_id 和user_id,我需要在给定聊天中获取指定成员的rank。我的查询应该是什么样的?
示例:
给定数据库内容:
[{
"_id": {
"$oid": "5f84ffad51d91fa6247b17e6"
},
"chat_id": 1,
"status": true,
"members": [
{
"user_id": 178291450,
"rank": 1
},
{
"user_id": 618121637,
"rank": 0
}
]
}]
我想在与chat_id: 1 的聊天中获得user_id: 178291450 用户的rank(应该是1)。
我试过这个:
chats.find({ "chat_id": event.chat_id, "members.user_id": int(admin) }, { _id: 0, members: { $elemMatch: { "members.user_id": int(admin) } } })
(来自我的 Python 代码,其中event.chat_id 是所需的chat_id,而admin 等于178291450),
但这不会返回任何内容 ({})。
【问题讨论】:
-
这能回答你的问题吗? MongoDB filter nested array
-
@AlexisG 确实如此,但我设法找到了一个更简单、更短的解决方案。
标签: mongodb mongodb-query