0

Node Js Driver for MongoDB を使用する次のコードでは、コールバックのコンソール ログに特定の車両のドライバー数が記録されます。私の問題は、このコードでドライバーの数を1つ増やしようとすることです

$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 に答える