Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB$addtoSet和$set在同一操作中_Javascript_Node.js_Mongodb_Meteor_Mongodb Query - Fatal编程技术网

Javascript MongoDB$addtoSet和$set在同一操作中

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

在我的Meteor/javascript应用程序中,我试图通过文档的某个部分上的
$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()
    }
  }
);