SeY*_*Dev 6 database aggregate mongodb
我有两个收藏
我只想查看我关注的用户的故事
这是我的数据库的一个例子
db = {
"follow": [
{
"_id": 1,
"start": "user1",
"end": "user2",
},
{
"_id": 2,
"start": "user2",
"end": "user3",
}
],
"story": [
{
"_id": 1,
"owner_id": "user2",
"updated_at": 1638090000,
"deleted_at": null
},
{
"_id": 2,
"owner_id": "user3",
"updated_at": 1638080000,
"deleted_at": null
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想要这样的查询。当然,这是错误的:
db.story.aggregate([
{
"$match": {
"deleted_at": null,
"updated_at": {
$gte: 1638081000
},
"owner_id": {
$in: [
db.follow.find({"start": "user1"})
]
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
请注意,我希望所有这些都在一个查询中完成
在 mongo Playground 中查询:https://mongoplayground.net/p/ysRUDW4hRzh
小智 3
你应该在这里使用 $lookup
db.follow.aggregate([
{
"$match": {
"start": "user2"
}
},
{
$lookup: {
from: "story",
localField: "end",
foreignField: "owner_id",
pipeline: [],
as: "stories",
}
},
])
Run Code Online (Sandbox Code Playgroud)
此查询查找故事数据库,其中 localField(在本例中为 end)等于foreignField(在本例中为owner_id),然后放入故事字段
结果: https ://mongoplayground.net/p/0M6YxYWAQ2n
| 归档时间: |
|
| 查看次数: |
358 次 |
| 最近记录: |