【问题标题】:Python - Aggregation of MongoDB with "match" conditionPython - 具有“匹配”条件的 MongoDB 聚合
【发布时间】:2016-11-30 17:56:04
【问题描述】:

我正在尝试计算我的收藏中的一个值。这是一个示例:

{
    "_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}}}])

【问题讨论】:

标签: python mongodb pymongo aggregation-framework


【解决方案1】:

为什么你的 python 代码中有 {"$valid":"1"}。它是一个要匹配的字段。它应该是 {"valid":"1"}

【讨论】:

  • 我知道这是一个小错误。感谢您指出。我从我的 php 代码中复制这个东西时犯了这个错误。
  • 你能解释一下为什么我需要在 db.tme_data.aggregate([{ $match: { valid: 1 } },{"$group": {"_id":"$createdby" , "count":{"$sum":1}}}] 中使用 $ 和 createdby 吗?
  • $ 基本上是一个文字。它提供对字段的访问。为了更好地理解,请参阅:docs.mongodb.com/v3.2/reference/operator/aggregation/literal/…
猜你喜欢
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2021-11-12
  • 2018-08-24
  • 2020-06-29
  • 2019-01-24
相关资源
最近更新 更多