0

userlist 集合包含以下格式的文档。

{
        "_id" : ObjectId("5381d32ce72cc794166eede2"),
        "name" : "Haseeb",
        "password" : "dgkhan",
        "email" : "hasseeb@yahoo.com",
        "address" : "237 D, Faisal Town , Lahore",
        "phone" : "5162806"
}

我打算在现有文档中添加另一个成员,使生成的文档看起来像这样。

{
            "_id" : ObjectId("5381d32ce72cc794166eede2"),
            "name" : "Haseeb",
            "password" : "dgkhan",
            "email" : "hasseeb@yahoo.com",
            "address" : "237 D, Faisal Town , Lahore",
            "phone" : "5162806",
            "purchases" : [{
                "itemID": xyz,
                "quantity": 142
            },
            {
                "itemID": kjh,
                "quantity": 987
            }
            }]

}

为此,我编写了以下 mongoskin 查询,但它没有执行任何更新。

db.collection('userlist').update(
                {_id:req.session._id},
                 {
                    '$push': { purchases: {
                        itemID: item.ID,
                        quantity: item.quantity
                    }
                }
            }, function(err) {
                if (err) throw err;
                    console.log('Updated!');
            });
        }

req.session._id = 5381d32ce72cc794166eede2 的值,即我的集合中文档的有效 _id 字段,而 item.ID 和 item.quantity 也是有效字符串。任何帮助将非常感激。

4

3 回答 3

2

我对 Mongoose 比较熟悉,但是看看你可能使用的文档:

collection.updateById(req.session._id, ...)

或者

collection.update({_id: toObjectID(req.session_id)}, ...)
于 2014-05-25T15:42:24.513 回答
0

像这样的东西。您需要包含 $each 语法。

db.collection('userlist').update(
                {_id:req.session._id},
                 {
                    $push { purchases: { $each: {
                        itemID: item.ID,
                        quantity: item.quantity
                        }
                    }
                }
            }, function(err) {
                if (err) throw err;
                    console.log('Updated!');
            });
    }
于 2014-05-25T19:47:23.717 回答
0

我认为你应该使用 $set 而不是 $push。

这个特定问题的一个很好的资源是:http ://docs.mongodb.org/manual/reference/method/db.collection.update/#db.collection.update

于 2014-05-25T17:58:20.070 回答