Node.js mongodb中的批量更新数据

Node.js mongodb中的批量更新数据,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我的数据库中存储了以下数据。用例是用户可以选择日期并批量更新年龄或名称。查询将是什么样子 [ { date:'1-1-2016', users:[ { 'name':'james', 'age':18 }, { 'name':'alice', 'age':20

我的数据库中存储了以下数据。用例是用户可以选择日期并批量更新年龄或名称。查询将是什么样子

[
    {
        date:'1-1-2016',
        users:[
            {
                'name':'james',
                'age':18
            },
            {
                'name':'alice',
                'age':20
            }
        ]
    },
    {
        date:'2-1-2016',
        users:[
            {
                'name':'james',
                'age':18
            },
            {
                'name':'alice',
                'age':20
            },
            {
                'name':'xiaomi',
                'age':29
            }
        ]
    }
]
我使用了这个
Users.update({date:'1-1-2016','user.name':'james',{'$set':'Users.$.age':5}})

但它不是批量更新,它只更新单个文档

您可以使用。这是一个用于批量更新的特殊功能。请注意,
更新
是。

您可以在mongodb更新中设置multi-true选项

例如,如果要更新多个文档,请使用

更新({date:'1-1-2016','user.name':'james'},{'$set':'Users.$.age':5}},{multi:true})

但如果有许多日期可以匹配,请使用


Users.update({date:{$in:['1-1-2016','1-2-2016']},'user.name':'james'},{'$set':'Users.$.age':5},{multi:true})

示例:
db.collection('A')。updateMany({'repetitions.today:{$gt:0},{$set:{'repetitions.today:'0})。我认为在您的情况下,您只需要将
update
替换为
updateMany
。求你了,试试看?没那么简单。我的单个查询接受一个日期,当用户选择多个日期时,该查询如何工作?确定。在这种情况下,您可以使用
$In
谓词:
日期:{$In:[]}
$In
在这里有意义,最后我得到了一个答案,非常感谢!正如我所指出的,
update
是不推荐使用的函数。请不要在有意义的代码中使用它@Dmitryflov那么我应该用什么呢?@Jessie Emerson在更新的情况下,你应该使用
updateOne
updateMany
(这取决于你的目标)。官方文件在这里