這是我的集合:(很多對多)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}})
但是,我怎樣才能讓它在這個上面的結構:
如果我這樣做var a = db.movies.findOne(name:"The Terminator").actors
它返回我:
[
{
actors_id: 1,
role_id : 1
},
{
actors_id: 2,
role_id : 1
}
]
如何獲得僅此於陣列[1,2](actors_id)來獲得的演員姓名(以$中)
謝謝, 卓然
我明白了,謝謝你的回答Remon。如果我在嵌入數組中放置名稱而不是ID,這是否意味着如果我想更新演員名稱,則必須通過每部電影並對其進行更改(而不是僅將其更改爲單獨的集合並通過ID引用它)? – zugrina
是的,這正是它的意思。請注意,您可以在所有電影上輕鬆地進行一次原子寫入更新,但它可能會成爲執行時間方面的重量級操作。這就是爲什麼我說你必須考慮是否使用了正確的工具。在這種情況下,你必須要問的問題是「演員多久更換一次名字?」。答案可能很少,所以你應該每隔幾天/周運行一次更新就可以了 –