Regex MongoDB-查找嵌套文档中的字段计数

Regex MongoDB-查找嵌套文档中的字段计数,regex,mongodb,nested,field,embedded-documents,Regex,Mongodb,Nested,Field,Embedded Documents,我想从以下json中查找字段“36”的所有出现次数: 计数应该是2。该字段存在于任何data.TL.txx文档中。 我尝试了mongoDB的find()方法,但一次只能搜索一个文档。也许我需要一个正则表达式。有人能帮我吗 { "_id" : ObjectId("1115dd31af82eb3ca8028188"), "data" : { "TL" : { "T001" : { "11" : "05012017

我想从以下json中查找字段“36”的所有出现次数: 计数应该是2。该字段存在于任何data.TL.txx文档中。 我尝试了mongoDB的find()方法,但一次只能搜索一个文档。也许我需要一个正则表达式。有人能帮我吗

{
    "_id" : ObjectId("1115dd31af82eb3ca8028188"),
    "data" : {
        "TL" : {
            "T001" : {
                "11" : "05012017",
                "13" : "0",
                "28" : "000",
                "29" : "00000",
                "30" : "01012017",
                "31" : "01122014",
                "36" : "10000",
                "37" : "3000",
                "38" : "29.81",
                "39" : "1",
                "44" : "03",
                "02" : "NOT DISCLOSED",
                "04" : "10",
                "05" : "1",
                "08" : "16122014"
            }
        }
    }
},
{
    "_id" : ObjectId("345222ddaf82eb1b262be44f"),
    "data" : {
        "TL" : {
            "T004" : {
                "10" : "19052013",
                "11" : "15062013",
                "12" : "37903",
                "13" : "0",
                "28" : "00000000",
                "29" : "000000000000000000",
                "30" : "01052013",
                "31" : "01062011",
                "44" : "03",
                "02" : "NOT DISCLOSED",
                "04" : "10",
                "05" : "1",
                "08" : "27062011",
                "09" : "08052013"
            },
            "T005" : {
                "11" : "10012017",
                "12" : "114525",
                "13" : "8853",
                "28" : "00000300000300000",
                "29" : "000000XXX0000000010",
                "30" : "01012017",
                "31" : "01022014",
                "36" : "100000",
                "37" : "10000",
                "44" : "03",
                "45" : "6714",
                "02" : "NOT DISCLOSED",
                "04" : "10",
                "05" : "1",
                "08" : "27062011",
                "09" : "12122016"
            },
        }
    }
}

您可以使用下面的聚合

db.collection.aggregate([
  { $project: { "data.TL": { $objectToArray: "$data.TL" }}},
  { $unwind: "$data.TL" },
  { $project: { data: { $objectToArray: "$data.TL.v" }}},
  { $unwind: "$data" },
  { $group: { _id: "$data.k", count: { $sum: 1 }}}
]);

所以您只需要在o/p中计数?不需要,但计数必须在那里。如果我可以使用一个查询获得所有其他嵌套字段的计数,那就太好了!你的意思是说你需要计算
11
12
…等等。在一个查询中?与原始文档一起?是的,只计算嵌套文档TXXX中的所有字段。我得到一个异常无效运算符“$objectToArray”。请帮忙。您需要将mongo版本更新到至少3.4.4。好的。但在我的情况下,我不能升级版本,因为数据库托管在云上,我不是管理员。我们有旧版本的变通方法吗?我的版本是2.6.12直接回答。没有