gpt4 book ai didi

python - MongoDB:如何查找聊天室有电话号码的消息?

转载 作者:行者123 更新时间:2023-12-01 09:05:34 25 4
gpt4 key购买 nike

我将此 json 作为我的消息文档:

{"_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"
}

这是我的聊天室文档:

{   "_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。

提前致谢。

最佳答案

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

假设加入是在 chatRoomIdText_id 上,类似的内容应该适合您。

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}}
])

关于python - MongoDB:如何查找聊天室有电话号码的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52084428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com