Mongo .updateMany()返回TypeError:Property' updateMany'对象不是一个功能

时间:2017-06-07 08:26:58

标签: javascript mongodb mongodb-query

我在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": []}})一个接一个地做到这一点,但这效率低下,而不是我想要的。

1 个答案:

答案 0 :(得分:0)

您使用的mongo版本是什么? 自从&#34; UpdateMany&#34;已经在3.2中引入,请确保您至少使用该版本。