Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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_Nosql - Fatal编程技术网

在MongoDb上向后搜索

在MongoDb上向后搜索,mongodb,nosql,Mongodb,Nosql,我有两件收藏品 集合“用户” 收集“后端” 我想获得一个后端状态为“正在运行”的用户的后端列表。 mongodb如何像连接两个表一样实现这一点? 是否有任何方法可以从后端向后搜索或使用过滤器功能 我可以这样搜索 db.users.find({"backends.$id" : "distring"}) 但是如果我想在后端对象中搜索状态,该怎么办?喜欢 db.users.find({"backends.$state" : "running"}) 当然,它不起作用。MongoDB不支持连接,所以您

我有两件收藏品

集合“用户”

收集“后端”

我想获得一个后端状态为“正在运行”的用户的后端列表。 mongodb如何像连接两个表一样实现这一点? 是否有任何方法可以从后端向后搜索或使用过滤器功能

我可以这样搜索

db.users.find({"backends.$id" : "distring"})
但是如果我想在后端对象中搜索状态,该怎么办?喜欢

db.users.find({"backends.$state" : "running"})

当然,它不起作用。

MongoDB不支持连接,所以您需要分两步来完成。在外壳中:

var id=db.backends.find({state:'running'},{u id:1}).map(函数(后端){
返回后端。\u id;
});
var users=db.users.find({'backends.$id':{$in:ids}}).toArray();
另一方面,对于
后端
数组元素,最好使用普通的
ObjectId
而不是
DBRef
,除非该数组中的id实际上可以引用多个集合中的文档

db.users.find({"backends.$id" : "distring"})
db.users.find({"backends.$state" : "running"})