これは私のコレクションである:(多対多)MongoDBの多対多の検索
俳優:
{
_id: 1,
name: "Name 1"
}
映画:
{
_id: 1,
name: "The Terminator",
production_year: 1984,
actors: [
{
actors_id: 1,
role_id : 1
},
{
actors_id: 2,
role_id : 1
}
]
}
私は得ることができませんいくつかの映画の俳優のリスト
これを持っていると問題はありません:
{
_id: 1,
name: "The Terminator",
production_year: 1984,
actors: [1,2,3,4,5] (actors id's)
}
var a = db.movies.findOne(name:"The Terminator").actors
db.actors.find({"_id":{$in:a}})
しかし、どのように私はこのような構造でそれを行うことができます。
[
{
actors_id: 1,
role_id : 1
},
{
actors_id: 2,
role_id : 1
}
]
は、どのように私はこれだけでは得るか:私はこのvar a = db.movies.findOne(name:"The Terminator").actors
を行い、場合
それはこの私を返します。アクターの名前を取得するための配列[1,2](actors_id)
ありがとう、 Zoran
私はそれをあなたの答えRemonに感謝します。埋め込み配列にIDの代わりに名前を付けると、アクター名を更新したいのであれば、別のコレクションで変更してIDで参照する代わりに、すべてのムービーを読み込んで変更する必要があります。 – zugrina
はい、まさにその意味です。このアップデートは、すべてのムービーで1つのアトミックな書き込みを非常に簡単に行うことができますが、実行時間の点では重量のある操作になる可能性があります。これは、正しいツールを使用しているかどうかを実際に検討する必要があると述べた理由です。この場合、あなたが尋ねなければならない質問は、「どのくらいの頻度で俳優が名前を変えますか?」です。答えはめったにないので、数日/週に1回更新を実行する必要はありません –