我是MongoDB的新手,我真的想了解如何访问并计算数据库中所有文件的实例,其中我有'name1'(在名称数组中)。我该怎么用 - 聚合,找到?我尝试但一直都失败了,无法真正找到适当的查询。我的文件的一个例子如下。 我正在使用PyMongo作为连接驱动程序。
{
'_id':ObjectId('599983d47fec3323a8526d74'),
'name':[
{
'name1':{
'params':[
{
'a':'b'
}
]
},
{
'name2':{
'params':[
{
'a':'b'
}
]
}
]
}
答案 0 :(得分:0)
您的数据模型存在严重缺陷。永远不要将密钥用作值,因为这几乎总会迫使您在代码中执行奇怪的操作。
因此,更合适的数据模型将是
CommonMiddleware
查询此模型变得轻而易举
{
"_id": new ObjectId(),
"names": [
{
"name": "name1",
"params": {
"a":"b",
"foo":"bar"
}
}
]
}
注意:使db.yourColl.find({"names.name":"name1"})
成为一个数组是没有意义的。您可以通过params
对象的对象属性访问各个参数。
答案 1 :(得分:-1)
您可以对特定字段使用$in
运算符,并使用.count()
。例如:
db.COLLECTION.find({
'names': {
'$in': ['name1']
}
}).count()