【发布时间】:2017-07-01 19:03:47
【问题描述】:
cExample Mongo 文档
{
"_id": ObjectId("5652e77f21b0f1f2692558a1"),
"category": "clothing",
"Brand": [
{
"name": "Adidas",
"key": "Adidas"
},
{
"name": "Reebok",
"key": "Reebok"
},
{
"name": "Puma",
"key": "Puma"
}
],
"Color": [
{
"name": "Red",
"key": "Red"
},
{
"name": "Green",
"key": "Green"
},
{
"name": "Blue",
"key": "Blue"
}
]
}
现在我想搜索名称为 Adidas 或 Puma 的品牌。其他要求是只返回子文档,所以我尝试了下面给出的查询
find( { "Brand.name" : { $in : ["Reebok", "Adidas"]}},{"Brand" : 1, “_id”:0})
但它返回了品牌数组的所有三个对象
{
"Brand" : [
{
"name" : "Adidas",
"key" : "Adidas"
},
{
"name" : "Reebok",
"key" : "Reebok"
},
{
"name" : "Puma",
"key" : "Puma"
}
]
}
我当然也可以通过 Javascript 来做到这一点(通过重新调整的数组和匹配值进行迭代),但是有什么方法可以让我的目的仅通过 Mongo Query 来解决。
注意:在支持 JSON 文档的 NoSql 系统中,最大的区别是这些系统不支持关系,但您始终可以通过子文档维护关系。如果无法进行此类查询(如上所述),那么我认为以子文档形式保存数据不是一个好习惯,因为您无法根据需要查询它。专家对此有何看法????
【问题讨论】: