2
看看我的下面的示例架構。如何使用貓鼬同時更新子數組和父元素?
const ParentSchema = new mongoose.Schema({
id:String
name:String
age:Number
child:[{
id:String,
name:String,
age:Number}]
})
const collectionName = mongoose.model("parent", ParentSchema)
現在我想增加孩子和家長的年齡,爲他們每個人的具體身份。兩者在同一時間。我試着用下面的查詢來做它
collectionName.update({'_id':new mongoose.Types.ObjectId("59198a3e73ae303f97e97e8f"),'child._id':new mongoose.Types.ObjectId("59198a3e73ae303f97e97eds")},
{$inc:{'age':1},$inc:{'child.$.age':1}},function(err,res){
if(err){
console.log(err.message)
}else{
console.log(res)
}
上面的查詢運行良好,但它只更新了孩子的年齡,而不是父母的年齡。現在我不確定我應該如何模擬我的查詢來更新兩者?
感謝您更正@Gianmarco。實際上,我寫了不正確的查詢是我的錯。但是在我的真實程序中,我已經寫下了正如你所提到的正確版本的查詢。它不起作用。查詢你提到的actully更新child.age爲該特定的child.id的條件,但它沒有更新父對象的年齡 –
我已經在mongo shell中測試了這個查詢,它的工作原理。在我的情況下,查詢沒有使用id,但它使用了這個條件:{'name':「mark」,'child.name':「mark's son」}。現在我不知道條件類型是否可以改變結果,但如果你想要的話,你可以嘗試它來驗證。 – Gianmarco
是的@Gianmarco。你是對的,你的版本查詢的確在我的代碼上測試過之後對我來說還是很有用的。所以基本上我在執行兩個$ inc集時錯了。那就是它錯了的地方。當我用$ inc集合中的兩個增量更新我的查詢版本時,它確實有效。感謝您的時間 –