まず、いくつかの回答(thisなど)を読んでいますが、これをMeteorでどのように実装できるかはわかりません。Meteorの別のコレクションで索引付けされていない文書を削除する
私はitems
のコレクションを持っていて、別のものはcategories
です。カテゴリは、アイテムが保存されるときに動的に作成されます。ドキュメントが保存されたら、アイテムに関連付けられていないすべてのカテゴリをクリーンアップします。それ、どうやったら出来るの?私はSQLに慣れていて、Luceneのようなインデクサー以外の文書ベースのDBではあまり働いていません。
例えば、私はそれはもはやitems
によって参照されているので"Cat A"
を削除しないようにしたい
{ _id: "RK9kQSD7frgreYDvg", name: "Item 1", catId: "c4mE7hANtbWxHFAdm" }
{ _id: "569aogaGBYBMonkgg", name: "Item 2", catId: "c4mE7hANtbWxHFAdm" }
と2
{ _id: "mu2KzDbNdTcrZYGKs", name: "Cat A" }
{ _id: "c4mE7hANtbWxHFAdm", name: "Cat B" }
ようcategories
のような2 items
を与えられました。
私は
const Items = new Meteor.Collection('items');
const Categories = new Meteor.Collection('categories');
...
Categories.remove({ _id: { $not: { $in: ... } });
のようなものを推測するが、私はその時点からよく分かりません。
私はMongoDBのは、サブクエリに参加したり、テーブルのアイデアをサポートしていないと思うので、最も簡単な方法は、アイテムのすべてのユニークなIDを取得し、すべてのカテゴリを削除することですそのリストには '$ in'はありません。しかし、これは非常に効率が悪く、Itemsコレクションに含まれるドキュメントの数によっては実際的ではないかもしれません。集計を見ることもできます。私はMongoDBのドキュメントを調べましたが、削除フィルタ内で集約関数を使用できない理由は何も見当たりませんでしたが、MongoDBの経験が豊富な人が話す必要があるかもしれません。 – CodeChimp
ありがとうございます。私はあなたに同意します。私は効率的な方法でそれをどうやって行うことができないのか分かりません。とにかく数千ものアイテムはありませんが、私は知りたいのです。 –