如何用upsert:$ cond $ push / $ pull in MongoDB更新:true

时间:2016-05-24 22:33:04

标签: javascript node.js mongodb conditional

我正在尝试根据条件进行推送或拉动,以及一个upsert

    myCollection.update(
  {'id': location},
  {
    $set: { count },
    $setOnInsert: {
      id: location,
      users: []
    },
  },
  {
    $cond: {
      if: (increment==1),
      then: {$push: { users: userToken }},
      else: {$pull: { users: userToken }}
    }
  },
  {'upsert':true},
  (err, data) => {
    ...

我正试图干这个(有效):

    mongo.connect(dbUrl, (err, db) => {
if (err) throw err
let myCollection = db.collection('myCollection')
if(increment==1){
  myCollection.update(
    {'id': location},
    {
      $set: { count },
      $push: { users: userToken },
      $setOnInsert: {
        id: location
      }
    },
    {'upsert':true},
    (err, data) => {
      if (err) throw err
      console.log(data);
      callback()
      db.close()
    }
  )
}
else{
  myCollection.update(
    ...
    $pull: { users: userToken },
    ...
  )
}

})

当我有$ cond时,它不会向DB添加任何内容。 $ cond应该在哪里?

1 个答案:

答案 0 :(得分:0)

$cond 不适用于汇总框架。您需要的是一个纯旧的本机JS条件语句,您可以在更新操作中使用它之前创建更新文档,当然这应该在条件块中设置。请考虑以下示例:

@PersistenceConstructor