比方說,我有這樣的定義的Person
(集合persons
):有沒有辦法從Mongoose中的一個查詢中的參數中創建父項及其子項?
const personSchema = Schema({
name: String,
children: [{
type: Schema.Types.ObjectId,
ref: 'Person',
}],
})
const Person = mongoose.model('Person', personSchema)
我不能直接存儲children
一個Person
內,因爲兩個對象可以鏈接到同一child
,所以這就是爲什麼我做的這通過關係。
事情是,假設我想在一個查詢中創建一個Person
及其children
。我有一個args
對象要充分利用數據,這樣的定義:
const args = { name: 'John', children: [{ name: 'Anna' }, {name: 'Craig'}] }
我需要一個查詢創建persons
集合內3個文件,其名稱John
,Anna
和Craig
,它也應該記錄Anna
和Craig
的id
小號John
內的children
場,這樣的:
{_id: 1, name: "John", children: [2, 3]}
{_id: 2, name: "Anna"}
{_id: 3, name: "Craig"}
我想這個args
傳遞到創造的樂趣ction這樣的:
Person.create(args)
和它抱怨children
陣列不是的ObjectId
列數組。
我猜(沒有測試但)如果我更換children
的type
與personSchema
相反,它會創建一個嵌套的文件,而不是,這是我不想要的。
所以,問題是:是否有一種方法在Mongoose中做我想要的一個查詢? (我也知道我可以做多個查詢來拯救每個孩子,然後保存父母,但有些事情告訴我這不是應該做的方式,應該有一個更簡單的方法來做到這一點)。
這將創建1個嵌套的文件,我需要創建3個單獨的文件 – serge1peshcoff
正如你在你的問題中提到沒有必要使用單獨的查詢來保存所有的孩子和父母。您可以使用相同的查詢創建所有文檔,但要設置子元素,您必須點擊另一個查詢。我會更新我的答案。 – Sachin
@ serge1peshcoff查看已更新的答案。 – Sachin