如何在mongodb上更新现有的字段

时间:2014-04-15 15:17:39

标签: json mongodb

我正在创建一个goindex,但在我需要将2个不同的字段合并到数组之前我尝试使用此代码,但

db.contenuti.update( {},
     {$set:
        { "luogo.cordinate":[luogo.dd_latitudine,luogo.dd_longitudine] },
    { "multi": true })

如果我在控制台内运行代码没有错误,但仍保留3个点。

页面示例:

   "_id": ObjectId("534ce491e7fbe396208079b4"),
   "id_contenuto": NumberInt(188),
   "id_formato": NumberInt(19),
   "titolo": "panorama",
   "uri_cover": "http:\/\/www.inmedialoci.polito.it\/media\/img\/27032014panorama.jpg",
   "utilizzo": NumberInt(0),
   "data_caricamento": "2014-03-27T12:19:12+0100",
   "utente": {
     "id_utente": NumberInt(1),
     "nome": "Amministratore",
     "cognome": "In Media Loci" 
  },
   "luogo": {
     "id_luogo": NumberInt(9),
     "id_area": NumberInt(1),
     "nome": "Passerano Marmorito",
     "dd_latitudine"▼: 45.0545372,
     "dd_longitudine": 8.0194042,

  },
   "categorie": {
     "0": {
       "id_categoria": "4",
       "nome": "Ricordi",
       "main": "1" 
    } 
  } 

1 个答案:

答案 0 :(得分:0)

在您的查询中,您尝试使用已有字段 dd_latitudine dd_longitudine 作为数组更新 cordinate 字段。在更新中,同时读写方法将不起作用。易于实现这是首先获取文档然后修改并保存。

db.contenuti.find({}).forEach(function(doc) {
  doc.luogo.cordinate = [doc.luogo.dd_latitudine,doc.luogo.dd_longitudine] ;
  db.contenuti.save(doc);
});