2014-10-09 63 views
0

我正在使用mongodb數據庫來保存記錄。mongo db中的更新查詢

這是一個樣本記錄:

"_id" : ObjectId("53870ed7e4b00e612650c1b8"), 
"_class" : "mkcl.os.transformer.PayloadObject", 
"formId" : NumberLong(50), 
"dataMap" : { 
    "240" : "ramanbaug", 
    "241" : "1234", 
    "242" : "12345678", 
    "243" : "mr.joshi", 
    "244" : "8308009391 ", 
    "245" : "[email protected]", 
    "280" : "456", 
    "287" : "1234", 
    "276" : "29/05/14", 
    "247" : "No", 
    "248" : "No", 
    "249" : "Yes", 
    "250" : "No", 
    "251" : "Yes", 
    "252" : "No" 
} 

不,我想更新域 「241」 的值。我閱讀了Update和FindAndModify查詢。但沒有錯誤,記錄沒有更新。

+1

什麼是你的更新語句? – Wizard 2014-10-09 06:08:02

+0

你沒有做任何事情,毫不奇怪,沒有顯示錯誤,也沒有更新。 – 2014-10-09 06:35:05

+0

db.payloadObject.update({241:'1234'},{$ set:{241:'123456'}});這是我的查詢 – user1774890 2014-10-09 06:38:31

回答

0
db.payloadObject.update({"dataMap.241":'1234'},{$set :{"dataMap.241":'123456'}}); 
3
db.collection.update(
    <query>, 
    <update>, 
    { 
    upsert: <boolean>, 
    multi: <boolean>, 
    writeConcern: <document> 
    } 
) 
在你用它來找到結果,要更新

中的位置輸入新的值,比如插入查詢時做輸入相同的查詢的地方

,還有3個選項:

upsert =可選。如果設置爲true,則在沒有文檔匹配查詢條件時創建一個新文檔。默認值爲false,當未找到匹配項時不插入新文檔。因此,如果您的文檔不會被發現,您將創建一個新的文檔

=可選。如果設置爲true,則更新符合查詢條件的多個文檔。如果設置爲false,則更新一個文檔。默認值是false。有關更多信息,請參閱多參數。

writeConcern =可選。表達寫作關注的文件。省略使用默認的寫入問題。

你可以閱讀更多關於寫的關注位置:http://docs.mongodb.org/manual/core/write-concern/

單個文檔更新例如:

db.people.update(
    { name: "Andy" }, 
    { 
     name: "Andy", 
     rating: 1, 
     score: 1 
    }, 
    { upsert: true } 
) 

檢查出UPSERT:真正的,所以如果沒有按名稱發現它會創建新的文檔=安迪

多文檔更新例如:

db.books.update(
    { stock: { $lte: 10 } }, 
    { $set: { reorder: true } }, 
    { multi: true } 
) 

實例與您的數據:

db.people.update(
    { _id: ObjectId("53870ed7e4b00e612650c1b8") }, 
    { 
     dataMap: { 
     "241": "321" 
     } 
    } 
) 

,應該工作。

這是所有正式文件:

http://docs.mongodb.org/manual/reference/method/db.collection.update/