Могу ли я установить значение MongoDB для выражения javascript? - PullRequest
1 голос
/ 08 сентября 2011

Из документации, которую я прочитал, вы можете сделать это:

 db.people.update( { name:"Joe" }, { $set: { n : 1 } } );

(http://www.mongodb.org/display/DOCS/Updating)

Теперь я хотел бы установить динамическое значение, например, счетчик.или выражение:

var i = 0;
db.people.update( { name:"Joe" }, { $set: { n : $i++ } } );

db.people.update( { name:"Joe" }, { $set: { n : ${new Date()} } } );

Возможно ли это?

Я также согласился бы с любым решением, не требующим изменения, и сохранением полного документа.

1 Ответ

1 голос
/ 08 сентября 2011

mongo - это расширенная оболочка javascript с поддержкой mongodb, поэтому вы можете делать все, что можете, с простым javascript:

var i = 0;
db.people.update( { name:"Joe" }, { $set: { n : i++ } } );

и

db.people.update( { name:"Joe" }, { $set: { n : new Date() } } );

Update

ну так .. это не сработает.Вы должны обновить каждый документ индивидуально!JS выполняется до того, как вы передадите этот запрос в базу данных.Фактически вы делаете следующее:

db.foo.update( {}, { $set: { n : 0 } }, false, true ); # i was zero here
i++;

Как я уже говорил, вы должны обновлять каждый документ по отдельности, но вы можете выполнить все это на стороне сервера с помощью db.eval( ), чтобы немного ускорить процессбит;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...