2017-06-15 137 views
1

我是想用兩個參數找到要插入一個名字我的架構的「data_stream_map」陣列更新,貓鼬查找和_id

如下,

var query = { 
     '_id': new ObjectId("594261a0ea2d89001c851424"), 
     'inputs.name': "name1" 
    }; 

    return WFWorkflowModel.findOneAndUpdate(query, {$addToSet: {'inputs.$.data_stream_map': "121_name1"}}).then(function (result) { 
     return true; 
    }, function (error) { 
     console.error("WFEditor micro service - update dataStream."); 
     return error; 
    }); 

在互聯網上沒有和我一起然而。但是,當涉及到Robomongo 0.9.0這部作品,

db.getCollection('wfcomponents').findOneAndUpdate({ 
     _id: ObjectId("594261a0ea2d89001c851424"), 
     'inputs.name': "name1" 
    }, {$addToSet: {'inputs.$.data_stream_map': "120_name1"}}) 

貓鼬文件如下,

{ 
    "_id" : ObjectId("594261a0ea2d89001c851424"), 
    "key" : "task", 
    "description" : "", 
    "__v" : 0, 
    "updated" : ISODate("2017-06-12T07:08:58.462Z"), 
    "created" : ISODate("2017-06-12T07:08:44.079Z"), 
    "gridLocation" : { 
     "y" : 1, 
     "x" : 7 
    }, 
    "inputs" : [ 
     { 
      "name" : "name1", 
      "data_stream_map" : [ 

      ] 
     } 
    ] 
} 

所用的貓鼬版 「貓鼬」: 「^ 4.6.5」,我m出了什麼線索,有沒有人可以幫助我解決這個問題?我提到了很多堆棧溢出問題,但仍然沒有解決。

+1

問題是什麼?這看起來很好。您正在使用'.findOneAndUpdate()'而不返回文檔,因此您只需使用'.update()'。那是文件不返回的問題嗎? –

+0

沒問題,它不會將名稱插入到data_stream_map。 – d7k

+0

嘗試更新()以及但沒有幫助。 – d7k

回答

0

1.)將Robomongo更新到1.0,它在系統中有必要更新。 2.)看看我提供的這個鏈接,不確定你的問題是否是重複的,但這有很好的答案,我認爲你的問題有關,並且快速提示你不能更新MongoDB中的id,你需要刪除並重新創建(解釋在提供的鏈接中)。希望我讀到正確的問題,祝你好運。

P.S.如果您只是試圖查詢輸入內容,請確保您的文件已正確鏈接,即您需要正確地使用所有模塊。如果你有貓鼬使用find,findOne,findById,在哪裏。提供鏈接。再次希望即時回答這個問題,不知道你想達到什麼目的。

How update the _id of one MongoDB Document?

http://mongoosejs.com/docs/models.html

http://mongoosejs.com/docs/queries.html

+0

是的,當然會嘗試這些。 – d7k

0
Model.findOneAndUpdate(query,update,{new:true}).exec(function(err,docs){ 
     console.log(docs) 
}) 
//your code is correct , just lost the options{new:true},which will return the updated doc but not the found doc 
+2

儘管此代碼可能會回答問題,但提供有關如何解決問題和/或爲何解決問題的其他上下文可以提高答案的長期價值。 – Badacadabra