我正在尝试使用$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 举报,一经查实,本站将立刻删除。