コードは正常です。あなたの検索条件がどんなドキュメントにも一致していないため、あなたが更新を得ていない理由が疑わしい。
db.registeredUsers.find({ guid: ObjectId(req.cookies._id) })
検索条件が有効であれば、あなたが戻って「希望」の文書を取得する必要があります:
では、次のステートメントを試してみました。
ここに私の例があります:
最初にドキュメントを作成してください。
> db.registeredUsers.insert({ "mycustom_id":1, "favorites":[1,2,3]})
WriteResult({ "nInserted" : 1 })
ドキュメントが正しいかどうかを確認してください。
> db.registeredUsers.find()
{ "_id" : ObjectId("56f88aa1d14e4832a027f625"), "mycustom_id" : 1, "favorites" : [ 1, 2, 3 ] }
私が定義したいずれかの列に基づいて更新を行います。
> db.registeredUsers.update({"mycustom_id" : 1}, { $addToSet: { favorites: 5}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
更新結果を確認します。今すぐ
> db.registeredUsers.find()
{ "_id" : ObjectId("56f88aa1d14e4832a027f625"), "mycustom_id" : 1, "favorites" : [ 1, 2, 3, 5 ] }
、 "_id" フィールドに基づいて更新を行います。
結果の確認
> db.registeredUsers.update({"_id": ObjectId("56f88aa1d14e4832a027f625") }, { $addToSet: { favorites: 6}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
:
> db.registeredUsers.find()
{ "_id" : ObjectId("56f88aa1d14e4832a027f625"), "mycustom_id" : 1, "favorites" : [ 1, 2, 3, 5, 6 ] }
更新が配列を作成することが期待されるもう一つの例:どこ配列状況で再び「_id」に基づいて
> db.registeredUsers.insert({"a": 1})
WriteResult({ "nInserted" : 1 })
> db.registeredUsers.find()
{ "_id" : ObjectId("56f88aa1d14e4832a027f625"), "mycustom_id" : 1, "favorites" : [ 1, 2, 3, 5, 6 ] }
{ "_id" : ObjectId("56f88be6d14e4832a027f626"), "a" : 1 }
の更新をお気に入りは更新前に存在しません
> db.registeredUsers.update({"_id" : ObjectId("56f88be6d14e4832a027f626")}, { $addToSet: { favorites: 6}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
の
チェックの結果は:あなたが見ることができるように
> db.registeredUsers.find()
{ "_id" : ObjectId("56f88aa1d14e4832a027f625"), "mycustom_id" : 1, "favorites" : [ 1, 2, 3, 5, 6 ] }
{ "_id" : ObjectId("56f88be6d14e4832a027f626"), "a" : 1, "favorites" : [ 6 ] }
私のクエリは、あなたと同じです。あなたは "guid"を比較していて、 "_id"を比較しています。私は "guid"にあなたの期待する内容が含まれていないと疑いがあります。その結果、0の文書を返すための更新にあなたの "検索条件"が導かれます。