2
我有这种简单分贝,包含元素的子集:mongodb的序列化的子集结果
{ "_id" : ObjectId("5019eb2356d80cd005000000"),
"photo" : "/pub/photos/file1.jpg",
"comments" : [
{
"name" : "mike",
"message" : "hello to all"
},
{
"name" : "pedro",
"message" : "hola a todos"
}
]
},
{ "_id" : ObjectId("5019eb4756d80cd005000001"),
"photo" : "/pub/photos/file2.jpg",
"comments" : [
{
"name" : "luca",
"message" : "ciao a tutti"
},
{
"name" : "stef",
"message" : "todos bien"
},
{
"name" : "joice",
"message" : "vamos a las playa"
}
]
}
当我执行一个子集的发现: db.photos.find({},{ “comments.name”:1 })
林收到此结构:
[
{
"_id" : ObjectId("5019eb2356d80cd005000000"),
"comments" : [
{
"name" : "mike"
},
{
"name" : "pedro"
}
]
},
{
"_id" : ObjectId("5019eb4756d80cd005000001"),
"comments" : [
{
"name" : "luca"
},
{
"name" : "stef"
},
{
"name" : "joice"
}
]
}
]
但我希望得到一个简单的一维数组,像这样的(或类似):
[
{
"name" : "mike"
},
{
"name" : "pedro"
},
{
"name" : "luca"
},
{
"name" : "stef"
},
{
"name" : "joice"
}
]
我需要蒙戈PHP的官方驱动程序来实现此查询,但语言并不重要,我只是想通过什么逻辑来理解,我可以通过蒙戈完成这个壳
TNK!
谢谢Stennie 我认为有可能是一个更简单的解决方案,但在这之上对于文档的几个深度级别来说是很好的。 (这个解决方案将需要每个深度的foreach循环) 或者我认为也许我错了,因为我创建了我的数据库设计,也许我应该使用 – StefanoCudini 2012-08-03 00:09:35
@StefanoCudini:添加了一个使用MongoDB中的聚合框架的例子2.2rc0 。在这种情况下,实际上不需要位置运算符..只需要查找和分组独特的值。 – Stennie 2012-08-03 02:26:57
好的解决方案!但我使用的是mongodb而不是debian squeeze服务器,不幸的是我不能使用更新版本的1.4.4 我是一个新手MongoDB,我想也许我在项目应用程序中是错误的,也许我应该使用单独的集合然后将其放入dbref“comments”数组中:[..] 这样我就可以检索包含每个文档上所有注释的单个查询。 尚未能做出正确的选择,您认为最好的解决方案是什么? 或者如果2.2版本正在快速增长并且更好地升级您的版本而不是跟随debian存储库? – StefanoCudini 2012-08-05 00:42:37