2016-03-28 13 views
0

MongoDBでTypeScriptを使用していますが、配列に項目を追加しようとしています。Typescriptで配列に項目を追加する

registeredUsers.update({ guid: ObjectId(req.cookies._id) }, { 
    $addToSet: { 
     favorites: [comicID] 
    } 
}); 

これは私が現在持っているコードである、と私はregisteredUsersであるfavoritesと呼ばれる配列にcomicIDを追加しようとしています。現時点では、配列にはまったく追加されていないように見えるので、配列を見るときに空です。

答えて

0

コードは正常です。あなたの検索条件がどんなドキュメントにも一致していないため、あなたが更新を得ていない理由が疑わしい。

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の文書を返すための更新にあなたの "検索条件"が導かれます。

関連する問題