最近 Mongodb 2.2.0 に更新したところ、次のクエリが機能しなくなっていることがわかりました。
データベースは空で、次を実行します。
db.Sessions.update({_id:"test",sessions:{$not:{$elemMatch:{type:"Web"}}}},{$push:{sessions:{type:"Web",dateAdded:new Date}}},true)
エラーを返します:
Cannot apply $push/$pushAll modifier to non-array
更新前は、次のドキュメントが作成されていました。
{ "_id" : "test", "sessions" : [ { "type" : "Web", "dateAdded" : ISODate("2012-09-12T15:11:11.942Z") } ] }
何か案は?
編集: 言及するのを忘れていましたが、このバージョンでは次のように機能しない $not が追加されているため、配列/フィールドが存在しないことは問題ではありません。
db.Sessions.update({_id:"test"},{$push:{sessions:{type:"Web",dateAdded:new Date}}},true)