MongoDB查询中的条件$ inc

时间:2015-05-19 10:49:07

标签: mongodb mongodb-query database nosql

我的调查系统包含以下文件:

$('.foo').each(function () {
    var $this = $(this);

    var updateChart = $this.peity('donut');
    var text = "";
    var i = 0;

    function myLoop() {
        setTimeout(function () {

            text = i + "/12";

            updateChart.text(text)
                .change()

            i = i + 0.2;

            var maxValue = $this.data("value");
            if (i <= maxValue) myLoop();

        }, 0.5)
    }
    myLoop();
});

现在,我正在进行提交投票,因此我需要增加特定调查的“投票”字段(取决于用户选择的选项)。

我的问题是:我可以有多个这样的文档,所以我如何在这个数组中{ "_id" : ObjectId("555b0b33ed26911e080102c4"), "question" : "survey", "subtitle" : "", "answers" : [ { "title" : "option 1", "color" : "#FFEC00", "code" : "opt1", "_id" : ObjectId("555b0b33ed26911e080102ce"), "votes" : 0, "visible" : true }, { "title" : "option 2", "color" : "#0bb2ff", "code" : "opt2", "_id" : ObjectId("555b0b33ed26911e080102cd"), "votes" : 0, "visible" : true } ] } 字段$inc获取特定文档?我尝试了这个查询(基于this website),但它不起作用:

votes

这里的主要问题是我可以拥有这样的多个文档。提前谢谢!

1 个答案:

答案 0 :(得分:2)

使用$elemMatch和postional运算符$将查询更新为:

db.bigsurveys.update({
   "_id": ObjectId("555b0b33ed26911e080102c4"),
   "answers": {
     "$elemMatch": {
       "code": "opt1"
     }
   }
 }, {
   "$inc": {
     "answers.$.votes": 1
   }
 })