Javascript mongoDB:字段值递增的聚合
我需要将包含嵌套文档的集合转换为包含父引用的模型树结构。新文档应该有一个递增值的字段,每个文档的递增值从1开始 我的结构是这样的:Javascript mongoDB:字段值递增的聚合,javascript,mongodb,Javascript,Mongodb,我需要将包含嵌套文档的集合转换为包含父引用的模型树结构。新文档应该有一个递增值的字段,每个文档的递增值从1开始 我的结构是这样的: { "_id" : "sdaGREsfRdfGdFdwG", "docTitle" : "Document 1", "group" : [ { "id" : "cdPhkTpMXi8z6TqMT" "title" : "title 1", "data" :
{
"_id" : "sdaGREsfRdfGdFdwG",
"docTitle" : "Document 1",
"group" : [
{
"id" : "cdPhkTpMXi8z6TqMT"
"title" : "title 1",
"data" : [
{
"id" : "Nkspf5kKfPo3axeJA",
"some" : "data",
"other" : "things",
"and" : "so on",
},
{
"id" : "vyjgkuNXRN9KkCd5o",
"some" : "data",
"other" : "things",
"and" : "so on",
}
],
},
{
"id" : "TuibXPe5qMvqdMW6q"
"title" : "title 2",
"data" : [
{
"id" : "f5L5zsSNRSQKWoAXL",
"some" : "data",
"other" : "things",
"and" : "so on",
},
{
"id" : "Ca8ncFgq83RoeD8he",
"some" : "data",
"other" : "things",
"and" : "so on",
},
],
}
]
}
如您所见,有一个组数组,我想将其转换为单个文档:
{
"_id" : "cdPhkTpMXi8z6TqMT"
"title" : "title 1",
"type" : "group",
"order": 1,
"parent" : "sdaGREsfRdfGdFdwG"
},
{
"_id" : "TuibXPe5qMvqdMW6q"
"title" : "title 2",
"type" : "group",
"order": 2,
"parent" : "sdaGREsfRdfGdFdwG"
}
我是通过聚合:
db.myCol.aggregate([{$unwind:"$group"},
{$project:{_id:"$group.id", title:"$group.title",
parent:"$_id", type:{$literal:"group"}}},
{ $out : "target" }
]);
但我不知道如何设置具有递增值的order字段。对于每个主文档,这个递增值应该从1开始。尝试使用includearayindex:“arrayIndex”
它只适用于MongoDB版本>=3.2看看这个答案
{
$unwind:
{
path: <field path>,
includeArrayIndex: <string>,
preserveNullAndEmptyArrays: <boolean>
}
}