簡體   English   中英

MongoDB findAndModify不能和尚一起使用

[英]MongoDB findAndModify not working with monk

我正在嘗試將findAndModify與node.js mongodb模塊monk 。這是我正在使用的方法,這會在我的cmd引發500錯誤:

  notesCollection.findAndModify({_id:_id},[],{_id:_id,title:title,content:content},{'new':true,'upsert':true},function(err,doc){
    if(err)
        console.error(err);
    else
    {
        console.log("Find and modify successfull");
        console.dir(doc);
    }   
});

我在這里獲得了方法簽名 。我得到了一個看起來像這樣的錯誤,並且沒有任何信息:

 POST /notes/edit/542bdec5712c0dc426d41342 500 86ms - 1.35kb

Monk實現的方法比節點本機驅動程序提供的方法更符合方法簽名的Shell語法。 因此,在這種情況下, .findAndModify()的“外殼”文檔更適合此處:

  notescollection.findAndModify(
      {
        "query": { "_id": id },
        "update": { "$set": { 
            "title": title,
            "content": content
        }},
        "options": { "new": true, "upsert": true }
      },
      function(err,doc) {
        if (err) throw err;
        console.log( doc );
      }
);

還應注意,您應該使用$set運算符,或者甚至應該使用$setOnInsert運算符,您只希望在創建文檔時應用字段。 如果這樣的運算符應用,則“整個”文檔將替換為“更新”中指定的任何內容。

您也不需要在update部分中提供“ _id”字段,因為即使發生“ upsert”,該語句的“ query”部分中存在的任何內容也隱含在新文檔中創建。

和尚文檔還提示了用於方法簽名的正確語法。

遇到了同樣的問題,即使我喜歡它,接受的答案對我也不起作用。

還不夠清楚,但是文檔提示了正確的語法,從簽名開始:

  • 所有命令都接受簡單的data[, …], fn 例如
    • findAndModify({}, {}, fn)

發現部分

users.findAndModify({ _id: '' }, { $set: {} });

最后,繼續簽名部分:

  • 您可以在中間傳遞選項: data[, …], options, fn

放在一起:

collection.findAndModify({
    _id: '',
}, {
    $set: {
        value: '',
    },
}, {
    upsert: true,
});

因此,在這種情況下, data[, …]是一對{}, {}對象:查詢和更新。 然后,您可以在代碼段中將回調添加為第4個參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM