MongoDB:$和操作员未使用Node.JS驱动程序进行批量更新

MongoDB:$和操作员未使用Node.JS驱动程序进行批量更新,node.js,mongodb,coffeescript,Node.js,Mongodb,Coffeescript,我正在尝试从Node.js使用MongoDB 3.0.4中的。奇怪的是,如果使用了$和或$ne等运算符,我会得到下面的错误。不过,简单的查询可以工作 WriteError({"code":9,"index":0,"errmsg":"Unknown modifier: $and","op":{"q":{"$and":[{"id":49689},{"status":{"$ne":4}}]},"u":{"$and":[{"id":49689},{"status":{"$ne":4}}]},"multi

我正在尝试从Node.js使用MongoDB 3.0.4中的。奇怪的是,如果使用了
$和
$ne
等运算符,我会得到下面的错误。不过,简单的查询可以工作

WriteError({"code":9,"index":0,"errmsg":"Unknown modifier: $and","op":{"q":{"$and":[{"id":49689},{"status":{"$ne":4}}]},"u":{"$and":[{"id":49689},{"status":{"$ne":4}}]},"multi":true,"upsert":false}})
下面是CoffeeScript中的一些测试代码:

  bulk = db.mongo.collection('route-segments').initializeUnorderedBulkOp()
  filter = $and: [
      { id: 49689 }
      { status: $ne: 4 }
  ]
  # filter = id: segStatus.id # <-- this works
  bulk.find(filter).updateOne(filter, $set: status: 4)
  bulk.execute (err, result) ->
    console.log "err = #{err}"
MongoDB版本:3.0.4

MongoDB Node.js驱动程序:2.0.35

在updateOne方法中不应使用
过滤器


哦,谢谢!这真是一个愚蠢(而且昂贵)的打字错误,让我困惑了好一阵子。不客气,我知道那个故事!通常,最好的解决方案是重写部分,这是一个从头开始的问题!
> bulk=c.initializeUnorderedBulkOp()
{ "nInsertOps" : 0, "nUpdateOps" : 0, "nRemoveOps" : 0, "nBatches" : 0 }
> bulk.find({ $and: [{id: 49689}, {status: {$ne: 4}}]}).updateOne( {$set: {status: 4}})
> bulk.execute()
BulkWriteResult({
    "writeErrors" : [ ],
    "writeConcernErrors" : [ ],
    "nInserted" : 0,
    "nUpserted" : 0,
    "nMatched" : 1,
    "nModified" : 1,
    "nRemoved" : 0,
    "upserted" : [ ]
})