我有一个文档结构,如下所示 让我们说像ORDERS.MAIN_ORDERS.P1这样的树结构;基本上创建了3个文档,显示每个节点的父项
{
"_id" : ObjectId("5362a7fd300400ffbabc3754"),
"categoryid" : "ORDERS",
"ancestors" : [],
"availableLocales" : [
{
"locale" : "en_US",
"count" : 1
}
],
"rolledUpCount" : 1
}
{
"_id" : ObjectId("5362a7fd300400ffbabc3755"),
"categoryid" : "MAIN_ORDERS",
"ancestors" : [
"ORDERS"
],
"availableLocales" : [
{
"locale" : "en_US",
"count" : 1
}
],
"rolledUpCount" : 1
}
{
"_id" : ObjectId("5362a7fd300400ffbabc3756"),
"categoryid" : "P1",
"ancestors" : [
"ORDERS",
"MAIN_ORDERS"
],
"availableLocales" : [
{
"locale" : "en_US",
"count" : 1
}
],
"rolledUpCount" : 1
}
当一棵新树进来时(e; g ORDERS.MAIN_ORDERS.P2)我需要为该特定区域设置增加该categoryid(P2)的所有父树的计数。我如何使用mongoQuery做到这一点?
答案 0 :(得分:0)
您可以尝试使用以下内容进行更新:
db.mycollection.update(
{ "availableLocales.locale" : { "$in": ["en_US"] } },
{ "$inc" : { "availableLocales.count" : 1 } }
})
查找集合,其中availableLocales包含一个包含“en_US”值的区域设置的数组。
{ "availableLocales.locale" : { "$in": ["en_US"] } }
将count字段的值增加1.请注意,您可以传递multi:true来更新所有匹配的文档,而不仅仅是一个。
{ "$inc" : { "availableLocales.count" : 1 } }
有关这些工作原理的更多信息,请参阅文档。
---更多信息:
更新ORDERS:
db.mycollection.update(
{
"categoryid" : "ORDERS",
"availableLocales.locale" : { "$in": ["en_US"] }
},
{ "$inc" : { "availableLocales.count" : 1 } }
})
更新MAIN_ORDERS:
db.mycollection.update(
{ "categoryid" : "MAIN_ORDERS", "availableLocales.locale" : { "$in": ["en_US"] } },
{ "$inc" : { "availableLocales.count" : 1 } }
})
希望这能进一步澄清事情。它应该指向正确的方向!