2011-12-17 46 views
7

财产比方说,我有一个像这样的文件:MongoDB的查询对象列表

{ 
    _id: "cow", 
    comments: [ 
     {user: "karl", comment: "I like cows.", at: /*a date*/}, 
     {user: "harry", comment: "Cows are the best.", at: /*a date*/} 
    ] 
} 

现在我想收集所有意见,即留在我的分贝"karl"。或者只是某个日期的那些。 "comments"已编入索引,我该如何查询?

回答

9

喜欢的东西:

db.foo.find({"comments.user":"karl", "comments.at":{$gt:{dateObject}}); 

没有测试过,但你的想法;您可以在项目上深入了解。

我建议你去通过这个网站,因为它促使你通过互动式教学的大量工作:Interactive Tutorial

6

您应该使用$ elemMatch以匹配相同的文档不止一个条件。

喜欢的东西:

db.foo.find({comments: {"$elemMatch": {user: "karl", at: {$gt:{dateObject}}}}) 

详情请参阅here

+0

你的链接导致汇合登录屏幕.... – drevicko 2013-07-16 11:20:30

+1

MongoDB的网站改变了文档的URL - 反正我更新与新网站相关的事情的答案。 – 2013-07-16 15:26:04