Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB查询引用文档_Mongodb_Mongodb Query - Fatal编程技术网

MongoDB查询引用文档

MongoDB查询引用文档,mongodb,mongodb-query,Mongodb,Mongodb Query,我试图使用Mongodb引用的文档使其类似于sql关系数据库。 拥有一个像posted_event、users、event这样的集合 我做了一些搜索,我知道我可以从集合A获得一个objectid,而集合B将拥有一个引用集合A的objectid的字段 使用这种设计,在我的应用程序中,我只需查询集合A,然后传入值并“存储”/“显示”它们到集合B的结果中 这是向最终用户显示最终结果的正确用法和方法吗 如果正确,我将如何“替换”集合A中的集合B中的值 我想这只是两个find()查询 集合B是最终结果

我试图使用Mongodb引用的文档使其类似于sql关系数据库。 拥有一个像posted_event、users、event这样的集合

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

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

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

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

我想这只是两个find()查询

集合B是最终结果

 {
    "_id": {
        "$oid": "5ec032f4b0dbf9d43006aa78"
    },
    "activity_creator_id": {
        "$oid": "5ec02da3b0dbf9d43006aa5e"
    },
    "activity_receiver_id": [{
        "$oid": "5ec02e8bb0dbf9d43006aa61"
    }],
    "activity_name": {
         "$oid": "5ec03137b0dbf9d43006aa73"
    },
    "activity_status": {
        "$oid": "5ec02bdab0dbf9d43006aa56"
    }
}
集合A包含let say名称

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

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

Ahh明白了!谢谢你的提示。我想知道,当我决定使用java/javascript进行api/数据库调用时,我基本上会使用$lookup操作符来“连接”信息,然后清理并向下搜索我需要的数据?是的,尽管我建议您使用mongoose(如果您使用javascript),这会让生活更轻松。