我想构建一个只返回下面数据结构类的名称的查询。 到目前为止,我最接近的是使用点符号
db.mycoll.find({name:"game1"},{"classes.1.name":true})
但这种方法的问题在于它只会返回第一个类的名称。请帮我搞清楚所有三个班级的名字。
我希望我可以使用如下的外卡,但我不确定是否存在。
db.mycoll.find({name:"game1"},{"classes.$*.name":true})
数据结构网络:
{
"name" : "game1",
"classes" : {
"1" : {
"name" : "warlock",
"version" : "1.0"
},
"2" : {
"name" : "shaman",
"version" : "2.0"
},
"3" : {
"name" : "mage",
"version" : "1.0"
}
}
答案 0 :(得分:1)
没有简单的查询可以实现您所寻求的结果。 MongoDB对查询子对象或对象数组的支持有限。 MongoDB的基本前提是您要查询顶级文档。
尽管如此,事情正在发生变化,你仍然有一些选择:
$project
操作,可以执行您正在寻找的操作。classes
字段,然后将names
合并在一起。对于大多数语言来说,这应该是微不足道的。请注意,目前尚不清楚您使用classes
做了什么。这是一个数组还是一个对象?如果它是一个对象,classes.1
实际代表什么?它与classes.warlock
不同吗?