2016-03-12 2 views
0

Я используюкак обновить переменные поля в документе с помощью мангуста

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'); 
    } 
}); 
+3

Я вижу, что вы не приняли ни одного ответа на свои вопросы. Хотя это не обязательство, оно помогает сообществу и другим пользователям, в общем, если вы принимаете ответы, которые решают вашу проблему. – BatScream

+0

Возможный дубликат [Использование переменной для ключа в литературе объекта JavaScript] (http://stackoverflow.com/questions/2274242/using-a-variable-for-a-key-in-a-javascript-object- буквально) –

ответ

1

Там нет никакой разницы, в запросе, который мы используем для обновления с помощью оболочки или с помощью мангуста 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"}} 

который не прав.

+0

Спасибо. Он работает .. –

+0

Можете ли вы рассказать мне о нескольких обновлениях - означает, что событие является массивом обновлений. –

+0

@HimanshuRaj. Пожалуйста, учтите [принятие] (http://meta.stackexchange.com/a/5235/298489). ответьте, если он разрешит вашу проблему. Изменили мой ответ, чтобы добавить несколько полей для обновления, в объект событий. – BatScream

Смежные вопросы