微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Mongodb $inc嵌入值语法

我正在尝试使用$inc运算符在我的mongodb文档中增加一个字段.我想要增加的字段是我的文档计数字段的子属性,例如:

mydoc: {
    count: {
        schedules: 0
    }
}

当我尝试这个:

> db.mydocs.update({ _id: new ObjectId('4db5c2f3dc73c5afdaffd636') }, { $inc: { count.schedules: 1 } }, { upsert: true, safe: true }, null);

从我的mongo shell,我收到此错误消息:

Mon Apr 25 11:59:05 SyntaxError: missing : after property id (shell):1

我尝试了几种类似结果的语法变体.我需要采取不同的方法吗?我已经验证了我的文档存在并且有一个count.schedules字段设置为0.

我可以使用如下命令直接设置值:

 db.mydocs.update({ _id: new ObjectId('4db5c2f3dc73c5afdaffd636') }, { $set: { count: {  schedules:1 } } }, null, null);

但是,如果我尝试$inc操作的语法,我会收到此错误

Modifier $inc allowed for numbers only

谢谢

解决方法:

是的,你只能在数字上做$inc.这是我试图重现你的问题的方法,你可以注意到我使用了正确的引号,这就是你看到缺失的原因:属性id(shell)之后:1错误.

> db.schedules.save({"mydoc": { "count": { "schedules": 0}}});                                                                                                     
> db.schedules.find();                                         
{ "_id" : ObjectId("4db5cf199e631c2a52a7c643"), "mydoc" : { "count" : { "schedules" : 0 } } }
> db.schedules.update({ _id: new ObjectId("4db5cf199e631c2a52a7c643") }, { $inc: { "mydoc.count.schedules": 1 } }, { upsert: true, safe: true }, null);
> db.schedules.find();                                                                                                                                  
{ "_id" : ObjectId("4db5cf199e631c2a52a7c643"), "mydoc" : { "count" : { "schedules" : 1 } } }

希望这可以帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐