我试着在mongodb console:

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

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

name: Foobar
foo: {
  bar: 'bar'
  count: 1
}

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

推荐答案

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

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

希望这有帮助.

Mongodb相关问答推荐

如何对嵌套在另一个数组中的数组中的字段执行查找?

Mongo聚合的具体格式

定期自动轮换 MongoDb 集合

Mongodb聚合查找异常值

聚合 $accumulator + $project

MongoDB乘以对象值?

Mongodb按值分组并计算出现次数

TypeError:Cannot read property '_id' of undefined

SELECT 字段 AS `anothername` 的 mongodb 等效项

我怎样才能排序空值在 mongodb 中是最后排序的?

用 Redis 查询?

从 MongoDB find() 结果集中识别最后一个文档

在mongodb中实现分页

.NET 中的 Mongodb 单元测试

如何使用 mongodb 和 php 正确处理分页查询?

MongoDB中超过2GB的数据库

使用已排序的数据获取不同的值

更新时提示Field name duplication not allowed with modifiers

如何使用 mongoose 连接到 mongoDB Atlas

即使重新安装后,Mongo 仍在等待 27017