簡體   English   中英

如何使用貓鼬更新文檔中的變量字段

[英]how to update a variable field in a document using mongoose

我在用

db.hs.update( 
     {username: "hraj3116", "event_movie.name": "h"},
     {$set:{"event_movie.$.theatre":"vikas mall"}
     })

這在mongodb中更新,並且工作正常。 我如何使用貓鼬來使用它。 我想將“ event_movie”作為變量。

我在用

var  s = {'event_movie.name' : 'h'};
var event = {"event_movie.$.theatre" : "theatre"}; 
//event["event_movie.$.theatre"] = "theatre";
UserEventsDetails.findOneAndUpdate(
{ "username": username , s },
{ "$set": event },
{ "upsert": true, "new": true},
function(err, model){
    if (err){
        res.send(500, err);
    }else{
          res.send('done');
    }
});

在我們用於通過Shell或使用mongoose API進行更新的查詢中沒有區別。 在您的情況下,您需要稍微修改query參數:

var query = {};
query["username"] = username;
query["event_movie.name"] = "h";

產生正確的表示形式,即:

{"username":username,"event_movie.name":"h"}

然后將其用作:

var event = {};
event["event_movie.$.theatre"] = "theatre";
//event["someOtherField"] = "someOtherValue"; --> update some other field.

UserEventsDetails.findOneAndUpdate(
query,
{ "$set": event },
{ "upsert": true, "new": true},
function(err, model){
    if (err){
        res.send(500, err);
    }else{
          res.send('done');
    }
});

當前構建查詢的方式最終將其構建為:

{"username":username,{"event_movie.name":"h"}}

這是錯誤的。

暫無
暫無

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

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