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

MongoDB $addtoSet and $set in the same operation

在我的 Meteor/javascript 应用程序中,我试图通过 $addToSet 更新特定的 Mongo 数据库文档的特定部分,然后 $set同一文件的不同部分。这两个部分之间没有重叠,所以从我在网上阅读的内容来看应该是安全的。但我似乎无法获得正确的语法。如何在一个 javascript 命令中执行这两个操作?下面的命令作为两个单独的命令工作,我认为如果它们可以组合成一次写入 Mongo.

会更快
Collection.update(
  {_id: documentId},
  {$addToSet:
    {data:
      {$each: newData}
    }
  }
);
Collection.update(
  {_id: documentId},
  {$set:
    {lastTxn: lastTxn,
     updatedAt: new Date()}
  }
);

只要它们不在同一条路径上(这是你不能做的一件事)就完全没问题。 $set and $addToSet 操作只是 "update document" 的顶级 "keys":

 Collection.update(
  { "_id": documentId },
  {
    "$addToSet": { "data": { "$each": newData } },
    "$set": { 
       "lastTxn": lastTxn,
       "updatedAt": new Date()
    }
  }
);