Javascript MongoDB$addtoSet和$set在同一操作中
在我的Meteor/javascript应用程序中,我试图通过文档的某个部分上的Javascript MongoDB$addtoSet和$set在同一操作中,javascript,node.js,mongodb,meteor,mongodb-query,Javascript,Node.js,Mongodb,Meteor,Mongodb Query,在我的Meteor/javascript应用程序中,我试图通过文档的某个部分上的$addToSet,然后在同一文档的不同部分上的$set更新特定的MongoDB文档。这两部分之间没有重叠,所以从我在网上读到的内容来看应该是安全的。但我似乎无法正确理解语法。如何在一个javascript命令中执行这两个操作?下面的命令作为两个独立的命令工作,我认为如果将它们组合成对Mongo的一次写入,速度会更快 Collection.update( {_id: documentId}, {$addToS
$addToSet
,然后在同一文档的不同部分上的$set
更新特定的MongoDB文档。这两部分之间没有重叠,所以从我在网上读到的内容来看应该是安全的。但我似乎无法正确理解语法。如何在一个javascript命令中执行这两个操作?下面的命令作为两个独立的命令工作,我认为如果将它们组合成对Mongo的一次写入,速度会更快
Collection.update(
{_id: documentId},
{$addToSet:
{data:
{$each: newData}
}
}
);
Collection.update(
{_id: documentId},
{$set:
{lastTxn: lastTxn,
updatedAt: new Date()}
}
);
只要他们不在同一条道路上(这是你不能做的一件事),那就完全可以了。和操作只是“更新文档”的顶级“键”:
非常感谢。你回答中的单命令比我问题中的双命令快吗?@JonCursi一次访问服务器肯定比一般操作快。我可以同时更新多个字段,对吗?这就是所有发生的事情,只是不同类型的操作,因为MongoDB是一个支持这一点的文档存储,而不是SQL表。事实上,将其视为一个“事务”,在其中更新父文档和相关文档。原子写入似乎比任何速度考虑因素都重要得多。
Collection.update(
{ "_id": documentId },
{
"$addToSet": { "data": { "$each": newData } },
"$set": {
"lastTxn": lastTxn,
"updatedAt": new Date()
}
}
);