【发布时间】:2021-11-04 15:43:20
【问题描述】:
我目前的问题确实需要帮助。
问题:如何合并来自两个集合的数据?
第一个集合称为users,其中每个文档都包含有关一个用户的信息。此集合中 JSON 格式的文档示例:
{
"_id": ObjectId("userId1"),
"nameAndSurname": "Name 1",
"arrayOfImages": ["wwww.urlToImage1.jpeg"],
"favouritePlayer" : "Monfils",
"sport" : "Tennis",
"isProfileBlocked" : false
}
第二个集合称为user_relations,其中每个文档都包含users 集合中某个用户拥有的朋友的信息。此集合中 JSON 格式的文档示例:
{
"_id": ObjectId("someRandomString"),
"userId": "userId1",
"friendsArray": [
{
"userId" : "userId2",
"lastTimestamp": 19236752642,
"message": "Hellooo"
},
{
"userId" : "userId3",
"lastTimestamp": 12236752342,
"message": "Yeah",
},
]
}
我有一个如下所示的 Python 查询:
db.user_relations.aggregate([
{
"$match": {
"userId": "userId1"
}
},
{
"$unwind": {
"path": "$friendsArray"
}
},
{
"$sort": {
"friendsArray.lastTimestamp": 1
}
},
{
"$limit": 10
},
{
"$replaceRoot": {
"newRoot": "$friendsArray"
}
}
])
我运行该查询时的响应如下所示:
[{'userId': 'userId2', 'lastTimetamp': 19236752642, 'message': 'Yeah'}, {'userId': 'userId3', 'lastTimestamp': 12236752342, 'message': 'Hellooo'}]
现在我要做的是修改此查询,以便我可以从users 集合中为每个值(即friendsArray 中的用户)获取nameAndSurname 和arrayOfImages[0] 值,以便响应可以是:
[{'userId': 'userId2', 'nameAndSurname : 'Name 2', 'pictureUrl' : 'wwww.urlToImage2.jpeg', 'lastTimestamp': 19236752642, 'message': 'Yeah'}, {'userId': 'userId3', 'nameAndSurname : 'Name 3', 'pictureUrl' : 'wwww.urlToImage3.jpeg', 'lastTimestamp': 12236752342, 'message': 'Hellooo'}]
感谢您的宝贵时间!
【问题讨论】:
标签: mongodb mongodb-query pymongo