mongo查询获取嵌入文档

时间:2012-04-12 01:08:33

标签: mongodb

基于此:

db.room.save({name:'public',msg:[{to:'Jo',msg:'whats up'},{to:'Jo',msg:'dude?'}]})
db.room.find()
> { "_id" : ObjectId("4f86282a87850ac4bfe9a664"), "name" : "public", "msg" : [ { "to" : "Jo", "msg" : "whats up" }, { "to" : "Jo", "msg" : "dude?" } ] }

我想得到以下结果:

db.room.find(????)
> {"name" : "public", "to" : "Jo", "msg" : "whats up"}
> {"name" : "public", "to" : "Jo", "msg" : "dude?"}

为了达到这个目的,我应该使用什么查询?

1 个答案:

答案 0 :(得分:1)

简短的回答是无法检索单个嵌入式文档。只返回顶级文档。

此功能有一项功能请求。 “支持字段中的位置($)运算符以返回说明符” - https://jira.mongodb.org/browse/SERVER-828

此功能请求适用于版本2.1.1,但这可能会有所变化。

有一段时间在Google网上论坛上提出了一个类似的问题,“从一个DBObject数组中检索DBObject” - http://groups.google.com/group/mongodb-user/browse_thread/thread/7d2c8919dd6c4dd8这个问题专门针对Java驱动程序,但答案仍然适用。

如果要修改嵌入式文档,可以按照Google网上论坛响应中的说明进行操作。此外,新的聚合框架包含$ unwind方法,您可能希望尝试该方法。如果您只想打印嵌入的文档,则必须通过应用程序执行此操作,或者考虑更改文档结构,以便您要显示的文档是顶级文档。

希望这有帮助!