2012-05-29 49 views
0

文件我已经按照我的账户集合:蒙戈命令行查询嵌入式按对象ID

{ "_id" : ObjectId("4fc55125476e0a27d9000003"), 
"created_at" : ISODate("2012-05-29T22:43:49Z"), 
"teachers" : [ { 
"_id" : ObjectId("4fc55125476e0a27d9000004"), 
"updated_at" : ISODate("2012-05-29T22:43:49Z"),  
"created_at" : ISODate("2012-05-29T22:43:49Z") 
} ], 
"updated_at" : ISODate("2012-05-29T22:43:49Z") 
} 

我想查询那些具有_id 4fc55125476e0a27d9000003老师的账户。

如果我使用命令

db.accounts.findOne({"teachers._id" : ObjectId("4fc55125476e0a27d9000004")}) 

返回null。

此外,为什么mongo命令行事件挂起时,我使用find而不是findOne与上述命令。

+0

我刚刚保存了您的确切文档,并通过您的确切查询进行查询并找回了文档。当你刚刚执行db.accounts.find()时,文档是否与你粘贴的文档完全一样? –

+0

不知道这是否只是一个错字,但是你只要写一次你想查询** 4fc55125476e0a27d9000003 **,但是你的查询在最后显示** 4 **。如果您的数据集不包含... 3的条目,您将无法找到它。持有...... 3的_id是包含其中的教师信息的_id。无论如何,该查询应该工作。 – philnate

+0

@philnate你是对的。我打算使用老师的编号,即其中有4个的编号。也许这就是我得到null的原因。我会再试一次(今晚晚些时候,现在不能),并发布我发现的内容。谢谢! – septerr

回答

1

正如其他人指出的,查询实际上起作用。不知道那天发生了什么,我无法让它返回正确的结果。也许我正在使用不正确的数据库。感谢您为浪费您的时间而提供的帮助和道歉。