【问题标题】:MongoDB query referenced documentsMongoDB查询引用的文档
【发布时间】:2023-03-21 06:03:01
【问题描述】:

我正在尝试使用 Mongodb Referenced 文档使其类似于 sql 关系数据库。 拥有像posted_event、users、event这样的集合

我做了一些搜索,我知道我可以从集合 A 中获得一个 objectid,并且集合 B 将有一个引用集合 A 的 objectID 的字段。

使用这种设计,在我的应用程序中,我只需从集合 A 进行查询,然后传入值并将它们“存储”/显示到集合 B 的结果中。

这是向最终用户显示最终结果的正确用法和方法吗?

如果正确,我将如何“替换”从集合 A 中提取的集合 B 的值?

我认为这只是 2 个 find() 查询

集合 B 是最终结果

 {
    "_id": {
        "$oid": "5ec032f4b0dbf9d43006aa78"
    },
    "activity_creator_id": {
        "$oid": "5ec02da3b0dbf9d43006aa5e"
    },
    "activity_receiver_id": [{
        "$oid": "5ec02e8bb0dbf9d43006aa61"
    }],
    "activity_name": {
         "$oid": "5ec03137b0dbf9d43006aa73"
    },
    "activity_status": {
        "$oid": "5ec02bdab0dbf9d43006aa56"
    }
}

集合 A 包含我们说的名字

{
    "_id": {
        "$oid": "5ec02da3b0dbf9d43006aa5e"
    },
    "first_name": "Bobby",
    "last_name": "Lin",
    "email": "bobby.lin@gmail.com"
}

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

    Mongodb 提供了 $lookup 操作符来连接两个集合。它基本上就像 sql 中的连接,您可以在 A 中的 _id 和 B 中的 activity_creator_id 之间进行匹配。 如果您使用的是 mongoose odm,您将直接在集合 B 本身的查找查询中进行填充。

    【讨论】:

    • 啊,明白了!感谢您的提示。我想知道,所以当我决定使用 java/javascript 进行 api/数据库调用时,我基本上会使用 $lookup 运算符来“加入”信息,然后清理并深入了解我需要的数据?
    • 是的,不过如果你使用 JavaScript,我会建议你使用 mongoose,让生活更轻松。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多