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
(这取决于你的目标)。官方文件在这里