我在更新时使用$ set和$ inc做错了什么

Chr*_*ini 14 mongodb

我在mongodb控制台尝试这个:

db.foobar.update( 
  { name: "Foobar" },
  { 
    $set : { foo: { bar: 'bar' }, 
    $inc: { 'foo.count': 1 } 
  } 
}, true)
Run Code Online (Sandbox Code Playgroud)

它返回"ok",但db.foobar.find()返回一个空记录集.我正在尝试upsert一个文档,所以它看起来像:

name: Foobar
foo: {
  bar: 'bar'
  count: 1
}
Run Code Online (Sandbox Code Playgroud)

如果doc不存在,则创建一个计数为1.否则,只需增加计数.为什么不在上面工作?

idr*_*rig 17

在我看来,您的代码实际上是尝试设置文档的$ inc字段,而不是在foo.count字段上使用$ inc修饰符.这可能是你想要的:

db.foobar.update(
    { name: "Foobar" }, 
    {
        $set: { 'foo.bar': 'bar' }, 
        $inc: { 'foo.count': 1 } 
    }, true)
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.