祖先の配列を持つモデルツリー構造を使用しています。MongoDB:祖先の配列を持つモデルツリー構造を使って文書が欠落していないか確認してください。
{
"_id" : "GbxvxMdQ9rv8p6b8M",
"type" : "article",
"ancestors" : [ ]
}
{
"_id" : "mtmTBW8nA4YoCevf4",
"parent" : "GbxvxMdQ9rv8p6b8M",
"ancestors" : [
"GbxvxMdQ9rv8p6b8M"
]
}
{
"_id" : "J5Dg4fB5Kmdbi8mwj",
"parent" : "mtmTBW8nA4YoCevf4",
"ancestors" : [
"GbxvxMdQ9rv8p6b8M",
"mtmTBW8nA4YoCevf4"
]
}
{
"_id" : "tYmH8fQeTLpe4wxi7",
"refType" : "reference",
"parent" : "J5Dg4fB5Kmdbi8mwj",
"ancestors" : [
"GbxvxMdQ9rv8p6b8M",
"mtmTBW8nA4YoCevf4",
"J5Dg4fB5Kmdbi8mwj"
]
}
私の試みは、各祖先IDが存在するかどうかを確認することです。これが失敗すると、この文書が欠落し、データ構造が壊れています。
let ancestors;
Collection.find().forEach(r => {
if (r.ancestors) {
r.ancestors.forEach(a => {
if (!Collection.findOne(a))
missing.push(r._id);
});
}
});
しかし、このようにすると、たくさんのdbコールが必要になります。これを最適化することは可能ですか? おそらく、すべての一意の祖先IDを持つ配列を取得し、これらのドキュメントが1つのdbコール内に存在するかどうかを確認できますか?
おそらくMongoDB 3.4 – styvane