2个集合中的mongodb查询

2个集合中的mongodb查询,mongodb,Mongodb,我在一个mongo db中分别定义了2个集合中的2个Recond,如下所示 order: { "_id" : ObjectId("53142f58c781abdd1d836fcd"), "number" : "order1", "user" : ObjectId("53159bd7d941aba0621073e3") } user { "_id" : ObjectId("53159bd7d941aba0621073e3"), "name" : "

我在一个mongo db中分别定义了2个集合中的2个Recond,如下所示

order:

{

    "_id" : ObjectId("53142f58c781abdd1d836fcd"),
    "number" : "order1",
    "user" : ObjectId("53159bd7d941aba0621073e3")
}

user

{

    "_id" : ObjectId("53159bd7d941aba0621073e3"),
    "name" : "user1",
    "gender" : "male"

}
当我在控制台中使用此命令时,它无法执行 db.orders.find({user:db.user[''id']})db.orders.find({user:user[''id']}),

有什么问题吗?谢谢

我想你想要:

db.order.find({'user':db.users.findOne({'name':'user1'})._id})
在将输出插入查询之前,只需进行查询并检查输出

i、 e.检查:

db.users.findOne({'name':'user1'})._id
具有以下输出:

ObjectId("53159bd7d941aba0621073e3")
如果你想运行更大的查询,你必须改变你的结构。请记住,Mongodb不进行连接,因此您需要创建一个如下所示的用户文档:

user
{
 "name":"user1",
 "gender":"male",
 "orders":[
    {
     'number':'order1'
    }
 ]
}
然后,您可以使用以下方法更新此内容:

 db.user.update({'_id':ObjectId('blah')}, {'orders':{$push:{'number':'order2'}})
这将从订单跟踪开始

Mongo将能够通过以下方式找到:

 db.user.find({'orders.numbers':'order2'})
返回完整用户记录的另一种方法是:

> var user = db.users.findOne({name: 'user1'}); 
> db.orders.find({user: user._id});
这种方式可以更灵活一些,尤其是当您想要为多个用户返回订单时

请注意:


谢谢,但实际上,我想搜索所有用户的所有订单,而不仅仅是一个用户。那我该怎么办?谢谢


也许您可以帮助解决此问题:

use orders
db.getCollection('order').find({},{'_id':1})
db.getCollection('user').find({},{'_id':1})

谢谢,但实际上,我想搜索所有用户的所有订单,而不仅仅是一个用户。那我该怎么办?谢谢啊哈-我想你得重新设计了!谢谢,这个循环一定要有吗?或者我们可以使用like-in或其他关键字来获得结果?谢谢@用户3003466这取决于您所说的所有用户搜索的含义。我的意思是,您可以在orders表上进行查找,然后由所有用户进行搜索。如果您的下一步是尝试在控制台应用程序之外执行此操作,那么您将需要在Mongo中进行一些搜索,以了解在没有像传统RDBMS中那样的连接时进行模式设计所面临的挑战。
use orders
db.getCollection('order').find({},{'_id':1})
db.getCollection('user').find({},{'_id':1})