这是我要通过批量操作更新的文档:
{
"_id": {
"$oid": "5c640a5fa22c532e18077037"
},
"ids": [
{
"id": "ee51c1d1-cd60-45d3-9d76-166631545189",
"userName": "anon7",
"read": true
},
{
"id": "fab5c05d-7fad-4c16-a80c-1237c6d6ee76",
"userName": "anon6",
"read": false
}
],
"convoId": "58ab583d-73d2-41f6-9d32-1bb2835d15c8",
"postTitle": "Ncjcj",
"messages": [
{
"text": "asdad",
"id": "d27e23b1-4a73-4ae4-8589-5ce4aac92763",
"userId": "ee51c1d1-cd60-45d3-9d76-166631545189",
"date": 1550060127963
}
]
}
现在我想一次执行2项操作。首先,在message数组中插入一个新的message对象。这个很好用。我的第二个批量操作应在id数组中查询具有与给定id匹配的id属性的对象,然后将该对象的read属性更新为false。 为此,我正在使用ArrayFilters,因为我看不到其他任何工作方式。
查询如下:
bulk.find(convoId: "58ab583d-73d2-41f6-9d32-1bb2835d15c8")
.arrayFilters([{ "elem.id": receiverId }])
.updateOne("ids.$[elem].read" : false);
因此,当我执行批量操作时,第一个执行并开始工作,但随后我收到第二个错误:
bulk.find(...).arrayFilters is not a function
所以我查了一下,但是对于我的猫鼬和mongodb版本,arrayFilters应该可以工作。
我的版本:
"mongodb": "^3.1.8",
"mongoose": "^5.4.14",
有人知道如何解决这个问题吗? 预先感谢!