我有一个包含以下结构数据的monogoDB:
{ "Locales" : {
"Invariant" : {
"Checksum" : "7B4C15B697AAFC1484679076667267D2",
"Metadata" : {
"app" : {
"@appType" : "app",
"@id" : "284896113",
"categories" : {
"category" : [{
"@id" : "6011",
"@parentid" : "36",
"@type" : "GENRE",
"##text##" : "Music"
}, {
"@id" : "6016",
"@parentid" : "36",
"@type" : "GENRE",
"##text##" : "Entertainment"
}],
"##category" : null
},
"rating" : "2.5",
}
}
},
"ModifiedDate" : ISODate("2012-09-07T09:07:58.218Z")
} }, "_id" : "selection/live/app(284896113)"
我的数据库中大约有100,000个。我需要找出几件事。首先,他们中有多少人拥有“类别”数组,然后有多少人拥有一个或多个“类别”数组,最后,其中有多少具有## text ##的值?
干杯
答案 0 :(得分:2)
您可以使用$ exists:
db.things.count( {
'Locales.Invariant.Metadata.app.categories': {$exists: true }} );
db.things.count( {
'Locales.Invariant.Metadata.app.categories.category': {$exists: true }} );
db.things.count( {
'Locales.Invariant.Metadata.app.categories.category.##text##':
{$exists: true }} );
请注意,这将返回文档数,而不是匹配数。在您的示例中,它将返回“1”,因为有一个文档,而不是“2”(对于两次出现的## text ##)。