我在users
集合中有以下文档:
文件1:
{
"_id": {
"$oid": "5934fd84d6ba4c241259bed1"
},
"first_name": "Joe",
"last_name": "Smith",
"username": "jsmith",
"email": "jsmith@gmail.com",
"password": "$2a$10$eyIbahYKETTtP.i6WlyYd.QeqGNWswW1y/H/aOWw8euFDmWz.wwH2",
"gender": "male",
"messages": [
{
"$oid": "5937a1118ca79a02a6d10b11"
}
],
"__v": 16
}
文件2:
{
"_id": {
"$oid": "5934fe100b557624207db665"
},
"first_name": "Sarah",
"last_name": "Smith",
"username": "tsmith",
"email": "tsmith@gmail.com",
"password": "$2a$10$hfPXLRU4wu2i0/HiVCXO5e2k4ORTsJGZhJ63OpU9OsfTz7JJYRnDS",
"gender": "female",
"messages": [
{
"$oid": "5937a1118ca79a02a6d10b11"
}
],
"__v": 25
}
如何遍历整个集合,并删除messages
数组(保留messages
键,但是使用空数组)?此集合只有2个文档,但我想根据需要使用尽可能多的文档。
结果文档应如下所示:
{
"_id": {
"$oid": "5934fd84d6ba4c241259bed1"
},
"first_name": "Joe",
"last_name": "Smith",
"username": "jsmith",
"email": "jsmith@gmail.com",
"password": "$2a$10$eyIbahYKETTtP.i6WlyYd.QeqGNWswW1y/H/aOWw8euFDmWz.wwH2",
"gender": "male",
"messages": [],
"__v": 16
}
我尝试使用db.users.updateMany({}, { $set: { "messages": []}})
执行此操作,但我收到错误:E QUERY TypeError: Property 'updateMany' of object my_match.users is not a function
。我没有将<filter>
参数传递给updateMany()
,因为我想根据mongoDB docs更新集合中的所有文档:&#34;指定一个空文档{}更新集合中的所有文档。&#34;
我可以使用db.users.update({first_name: "Joe"}, { $set: { "messages": []}})
一个接一个地做到这一点,但这效率低下,而不是我想要的。
答案 0 :(得分:0)
您使用的mongo版本是什么? 自从&#34; UpdateMany&#34;已经在3.2中引入,请确保您至少使用该版本。