2016-11-30 132 views
0

我试图在我的集合中计算一个值。这里有一个例子:Python - MongoDB与“匹配”条件的聚合

{ 
    "_id" : ObjectId("583e86987f22def116c35055"), 
    "createdby" : "DEO007", 
    "valid" : 1 
} 

在每个文档,一些“有效”是0,有些是1 就我而言,我只希望,通过这些具有“有效”“createdby”分组文件总数: 1.

我在MongoDB中尝试这样做,它的工作没有任何错误:

db.tme_data.aggregate([{ $match: { valid: 1 } },{"$group": {"_id":"$createdby" , "count":{"$sum":1}}}]) 

但我没能实现同样的在我的Python代码。 这就是我试过的:

collection.aggregate([{"$match":{"$valid":"1"}}, {"$group": {"_id":"$createdby" , "count":{"$sum":1}}}]) 

它给了我一个空白的集合。

PS:

1)我使用pymongo

2)这是我的Python代码正常工作:

collection.aggregate([{"$group": {"_id":"$createdby" , "count":{"$sum":1}}}]) 
+0

可能重复的[MongoDB聚合/组/查询翻译为pymongo查询](http://stackoverflow.com/questions/26465846/mongodb-aggregate-group- sum-query-translated-to-pymongo-query) – user1211

+0

@ user3632894我甚至试着用管道解决你所提到的问题。但是要么解释过于简洁,要么我犯了一些错误。无论哪种方式,更详细的解决方案都会有所帮助。 – Anubhav

回答

1

你为什么{ “$有效” :“1”}在你的python代码中。它是一个匹配的领域。它应该是{“有效”:“1”}

+0

我知道这是一些小错误。感谢您指出。我从我的PHP代码复制这个东西时犯了这个错误。 – Anubhav

+0

你能解释为什么我需要在'db.tme_data.aggregate([{$ match:{valid:1}},{“$ group”:{“_id”:“$ createdby”,“ count“:{”$ sum“:1}}}]'? – Anubhav

+1

$基本上是一个文字,它提供了一个字段的访问权限,为了更好的理解,请参考https://docs.mongodb.com/v3.2/reference /operator/aggregation/literal/#exp._S_literal – user1211