首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MongoDB:如何在聊天室有电话号码的地方查找消息?

MongoDB:如何在聊天室有电话号码的地方查找消息?
EN

Stack Overflow用户
提问于 2018-08-30 03:01:12
回答 1查看 54关注 0票数 1

我将这个json作为我的消息文档:

代码语言:javascript
运行
复制
{"_id":"nOneDzCuhE",
 "type":"text",
 "_p_chatRoomId":"chatrooms$BSxYYyUX49",
 "chatRoomIdText":"BSxYYyUX49",
 "_p_senderId":"_User$LD0r3WkuUD"
 "message":"Hello World!"
 "senderIdText":"LD0r3WkuUD"
 "_created_at":"2018-08-29 19:52:46.678",
 "_updated_at":"2018-08-29 19:52:46.678"
}

这是我的聊天室文档:

代码语言:javascript
运行
复制
{   "_id":"mfBRNbQ0gd",
    "type":"Individuals",
    "users": [
        0: {"phone_number":"987654321","id":"7AifRl9D3T","name":"user1"},
        1: {"phone_number":"123456789","id":"qapXotisT1","name":"User2"}
    ],
    "_created_at": "2018-08-14 18:11:06.090",
    "_updated_at":"2018-08-14 18:11:06.090"
}

因此,首先我想从chatRoomIdText获取id,并使用它检查聊天室是否有我的电话号码(在users数组下)。

简而言之,我想在聊天室有我的电话号码的地方显示所有的消息:例如987654321。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-30 05:33:54

在3.6中,您可以使用$lookup管道变体在联接的集合内应用$match

假设join是在chatRoomIdText & _id上,这样的代码应该可以为您工作。

代码语言:javascript
运行
复制
db.message.aggregate([      
   {"$lookup":{
      "from":"chatroom",
      "let":{"chatRoomIdText":"$chatRoomIdText"},
      "pipeline":[
        {"$match":{
          "$expr":{
           "$and":[
              {"$eq":["$$chatRoomIdText","$_id"]},
              {"$in":["987654321","$users.phone_number"]}
             ]
           }
        }}
      ],
      "as":"lookup-results"
    }},
    {"$match":{"lookup-results.0":{"$exists":true}}},
    {"$project":{"lookup-results":0}}
])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52084428

复制
相关文章

相似问题

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