我正在尝试学习MongoDB,我似乎无法弄清楚如何做到这一点.
假设我有三个这样的对象:
{
"_id": 99990,
"type" : 15,
"attributes": [
{
"id": 1,
"value": 115
}
]
},
{
"_id": 99991,
"type" : 5,
"attributes": [
{
"id": 1,
"value": 120
}
]
},
{
"_id": 99992,
"type" : 5,
"attributes": [
{
"id": 1,
"value": 120
}
]
},
{
"_id": 99993,
"type" : 5,
"attributes": [
{
"id": 1,
"value": 150
}
]
},
Run Code Online (Sandbox Code Playgroud)
如何搜索项目并仅根据属性"id"1返回id为99993,值为150?我今天刚开始玩MongoDB,所以这可能是一个非常基本的问题.
要添加挑战,我如何通过attributes/id/value对类型5的每个项目的结果进行分组,并获得如下结果:
"id" : 1, "value" : 150, "count" : 1
"id" : 1, "value" : 120: "count" : 2
Run Code Online (Sandbox Code Playgroud)
这只是示例数据,模式非常复杂,但就本练习而言,它应该足够了.
对于第一部分,您应该能够通过执行以下操作来检索该记录:
db.collectionName.find({"attributes.id": 1, "attributes.value": 150});
Run Code Online (Sandbox Code Playgroud)
这将仅从具有属性数组元素的任何对象中检索_id字段,该元素具有id = 1和value = 150.
由于问题的第二部分涉及返回匹配计数,因此您应该使用map-reduce探索您的选项.您无法使用简单的Mongo查询生成该结果.
| 归档时间: |
|
| 查看次数: |
4855 次 |
| 最近记录: |