3
我試圖從數組(子文檔)中拉/取值。NodeJS/Mongoose/MongoDB - 拉(從數組中)不起作用
實例文檔:
{
_id: 5150a1199fac0e6910000002,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
我在內存中的文檔,因爲我從蒙戈把它了。我想:
var left = object.items.pull({id: 24});
console.log(left)
輸出:
[{
id: 23,
name: 'item name 23',
_id: 5150a1199fac0e6910000045
},{
id: 24,
name: 'item name 24',
_id: 5150a1199fac0e6910000002
}]
所以看起來像我已經有一個問題。從pull調用返回的數組應該是pull之後數組中剩餘的數組。不知道爲什麼它沒有從項目數組中拉出來。這是否僅支持通過ObjectId ant而不是用戶定義的字段?
我打電話保存:
object.save();
貓鼬將這一情況記錄查詢:
Mongoose: mycollection.update({ _id: ObjectId("5150901ac345824a07000002"), __v: 3 })
{ '$inc': { __v: 1 }, '$pull':
{ attachments: { _id: { '$in': [ ObjectId("5150c64d63773efb1f000002") ] } } } } {}
這說明了爲什麼我的文件沒有被刪除。應刪除的數組項的_id是:
_id: 5150a1199fac0e6910000002
是貓鼬被髮送到數據庫中移除該項目是:
ObjectId("5150c64d63773efb1f000002")
任何想法我做錯了嗎?我試圖刪除_id以外的東西,不知道這是否可能,但從文檔看起來是。
即使我面臨着同樣的問題。有沒有什麼辦法可以對實例執行'pull'而不是'user.alerts.pull()'而不是'User.findOneAndUpdate()'模型? – Raeesaa 2014-04-28 06:11:01
@ user2235057這不會很有伸縮性。如果多個同一個電話同時被觸發,您可能會碰撞實例。 – FRD 2014-08-21 14:23:51