首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在mongodb的chats数组中查找对象值的所有匹配项

在mongodb的chats数组中查找对象值的所有匹配项
EN

Stack Overflow用户
提问于 2020-10-15 05:39:08
回答 2查看 37关注 0票数 0

我正在构建一个聊天应用程序,但我被一个查询卡住了。我将聊天内容存储在对象数组中。我想获取与对象值的键匹配的聊天记录。我正在使用mongoose库来查询mongodb。请一定要帮我解决这个问题。

我的聊天模式是:

代码语言:javascript
运行
复制
chats: [
  {
    sentFrom: 'user1',
    sentTo: 'athlete1',
    message: 'hi'
  },
  {
    sentFrom : 'user2',
    sentTo: 'athlete1',
    message: 'hi athleyte'
  }
]

我想找出sentFrom值为'user1‘的所有聊天记录。

这是我的code,它不工作了。

EN

回答 2

Stack Overflow用户

发布于 2020-10-15 16:20:56

从你的文档中,

您正在对整个集合进行匹配,并且您的条件是chats.sentFrom应等于user1,这就是为什么在这种情况下,如果任何其他文档具有类似类型的数据,它将返回2个文档,以便过滤出该数组,您将不得不使用使用聚合的$filter

代码语言:javascript
运行
复制
db.test.aggregate([
    { $match: {_id: ObjectId("5f87fec2e80b410a20c6819a")}},
    { $project: {
        chats: {$filter: {
            input: '$chats',
            as: 'chat',
            cond: {$eq: ['$$chat.sentFrom', "user1"]}
        }}
    }}
])
票数 0
EN

Stack Overflow用户

发布于 2020-10-15 06:34:20

尝试筛选:

代码语言:javascript
运行
复制
 let result = chats.filter(chat => chat.sentFrom === 'user1');
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64361860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档