计算包含数组中特定项的MongoDB中的所有文档

时间:2017-08-20 15:18:39

标签: python mongodb

我是MongoDB的新手,我真的想了解如何访问并计算数据库中所有文件的实例,其中我有'name1'(在名称数组中)。我该怎么用 - 聚合,找到?我尝试但一直都失败了,无法真正找到适当的查询。我的文件的一个例子如下。 我正在使用PyMongo作为连接驱动程序。

{  
   '_id':ObjectId('599983d47fec3323a8526d74'),
   'name':[  
      {  
         'name1':{  
            'params':[  
               {  
                  'a':'b'
               }
            ]
         },
         {  
            'name2':{  
               'params':[  
                  {  
                     'a':'b'
                  }
               ]
            }
         ]
      }

2 个答案:

答案 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()