0

在以下使用 MongoDB 的 Node Js 驱动程序的代码中,回调中的控制台日志将记录特定车辆的驱动程序数量。我的问题是尝试使用此代码将驱动程序的数量增加一

$inc:{vehicles[vehicle_number].drivers:1}

它给了我意想不到的令牌错误,[而且我什至不确定通过它启动选择器vehicles是否会作用于被查询的家庭。您能解释一下我如何更改代码以使增量不会破坏功能。

      families.findAndModify({_id:family_id}, [],
          {$inc:{vehicles[vehicle_number].drivers:1}} , function(err, doc) {

             console.log(doc.vehicles[vehicle_number].drivers)

        })

更新 车辆键包含一系列车辆。在上面的代码中,vehicle_number 表示数组中的索引。我正在尝试增加上面 findAndModify 中的驱动程序数量。

{
    "_id" : ObjectId("5143ddf5bcf1bf4ab37da054"),
    "name"   : "Jones",
    "vehicles" : [
        {
            "make" : "Ford",
                    "year" : "2001",
            "color" : "blue",
            "registration" : "xdklde",
            "drivers" : 3
        },
                {
            "make" : "Dodge",
                    "year" : "1992",
            "color" : "green",
            "registration" : "klrv7z",
            "drivers" : 2
        },
4

1 回答 1

2
var selector = {};
selector['vehicles.' + vehicle_number + '.drivers'] = 1;

然后在查询中使用它:

families.update({'_id':family_id}, {'$inc':selector} , function(err, doc) {

       console.log(doc);

});

这应该有效。

于 2013-09-27T19:32:36.897 回答