1
對於mongodb 2.0.6,相同的查詢正常工作。將其更新至2.2.0後會出現錯誤並且未執行該操作。
"errmsg" : "exception: can't append to array using string field name [$]"
這發生在下面一行:
db.findAndModify(query, null, null, false, updateJob, true, false);
其中查詢是:
{ "_id" : ObjectID , "job" : { "$elemMatch" : { "jobId" : "1"}}}
和updateJob
是:
{ "$set" : { "job.**$**.endTime" : { "$date" : "2012-09-05T04:12:44.708Z"}}
** 我的測試COLLEC重刑如下,我想更新我的第一份工作,並設置新的結束時間。
{
"_id" : "5f6761d1-589a-4140-9753-5e890ab3ecb9",
"name" : "Test",
"lastJobId" : 2,
"job" : [{
"jobId" : "1",
"jobName" : "test1",
"endTime" : ISODate("2012-09-07T17:39:43.032Z"),
}, {
"jobId" : "2",
"jobName" : "test2",
"endTime" : ISODate("2012-09-07T17:39:43.838Z"),
}]
}
和查詢用於此是:
{ findandmodify : "Test", query : { _id : "5f6761d1-589a-4140-9753-5e890ab3ecb9", job : { $elemMatch : { jobId : "1" } } }, update : { $set : { job.$.endTime : new Date(1347039583032) } , new : true }
它是否可以用作更新? –
如果您剪切並粘貼實際命令和所有定義 - 這在shell中不是合法語法,那麼我們的答案可能對您的實際問題不正確。 –
感謝您的幫助。我還沒有嘗試過更新。但更新的另一個查詢正常工作。以shell格式查詢{findandmodify:「Test」,query:{_id:「6bfe653c-10b2-49c2-b4e7-c26350d886dd」,job:{$ elemMatch:{jobId:「1」}}},update:{$ set: {job。$。endTime:new Date(1346914611104)},new:true} – user1535750