编写MongoDB查询以根据引用的属性进行筛选?

2024-05-16 20:10:47 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一组名为“dog”的文档,一组名为“owners”的文档,以及每个dog文档中对所有者的引用。在

例如:

dog1:
{"_id": "abcdef0123456789",
 "name": "Rover",
 "owner": ObjectId("1234567890abcdef")}

owner1:
{"_id": "1234567890abcdef",
 "name": "Bob"}

那么,在这个例子中,我如何找到所有主人叫“鲍勃”的狗呢

这是一个现有的数据库,所以我不能改变它存储数据的方式。我被当前的格式卡住了。在


Tags: name文档id数据库例子bob主人objectid
1条回答
网友
1楼 · 发布于 2024-05-16 20:10:47

您可以在mongodb3.6和更高版本中尝试下面的^{}聚合

db.owner.aggregate([
  { "$match": { "name": "Bob" }},
  { "$lookup": {
    "from": "dogs",
    "let": { "ownerId": "$_id" },
    "pipeline": [{ "$match": { "$expr": { "$eq": ["$owner", "$$ownerId"] }}}],
    "as": "dogs"
  }}
])

或者使用3.4^{}及以上版本

^{pr2}$

相关问题 更多 >