0

我需要计算以下 mongo 文档中的内部记录(而且我还必须获取所有文档的计数),

  "_id": ObjectId("503208f5b5db0135387d9249"),
   "function": "getNumberOfRecords",
   "graph": {
       "AB1": {
           "5028cbf7d7262c333a000cb0": 1,
           "5028ede7d7262c333a0011fb": 1
       },
       "AB2": {
           "5028ef9cd7262c333a001219": 1,
           "5028fb9cd7262c333a001c7f": 1,
           "5028fb9cd7262c333a001c80": 1,
           "5028fefcd7262c333a002354": 1,
           "50290d55d7262c333a0024e0": 1,
           "502918c9d7262c333a0025c3": 1,
           "502918c9d7262c333a0025c4": 1,
           "50293220d7262c333a002727": 1,
           "50293220d7262c333a002728": 1,
           "50293220d7262c333a002729": 1,
           "50293220d7262c333a00272a": 1,
           "50295a5bd7262c333a003bbc": 1
       },
       "AB3": {
           "5028ff00d7262c333a002363": 1,
           "50295a5ed7262c333a003bcb": 1
       },
       "AB4": {
           "50293fdfd7262c333a002977": 1
       }
   },
   "nameFilter": "name",
   "siteFilter": "sitename"
}    

我需要结果,

AB1 > 2
AB2 > 12
AB3 > 2

同样地.....

4

1 回答 1

0

在 mongodb 中执行此操作的最佳方法是创建额外的计数字段并通过客户端代码更新它们。

因此,我建议进行以下架构更改以满足您的需求:

{
 graphsCount: 1,
 graph: [
       {
          name: "AB1",
          count: 2,
          items: {
             "5028ff00d7262c333a002363": 1,
             "50295a5ed7262c333a003bcb": 1
         }
        }
]
}

不,您可以轻松实现所需的 ( AB1 > 2):

db.items.find({"graph.name" : "AB1", {"$gt": {"graph.count": 2}} })

请记住,上述查询返回嵌套图形数组中至少有一个名称为“AB1”且计数 > 2 的所有根文档。

于 2012-08-20T16:26:39.667 回答