2014-11-21 4 views
12

Я пытаюсь обновить все документы в коллекции со случайными числами. Каждая коллекция должна иметь другое число. Мой текущий код:Обновить все документы в коллекции со случайными номерами

db.myDoc.update({ rand: {$exists : false }},{$set : {rand:Math.random()}},{multi:true}) 

заполнит все документы с той же случайной величиной. Как исправить?

+0

установить переменную перед и использовать это? – mvuajua

ответ

20

Вы можете сделать использование метода cursor.forEach() курсора в Монго оболочки для достижения этой цели:

db.myDoc.find({rand: {$exists : false }}).forEach(function(mydoc) { 
    db.myDoc.update({_id: mydoc._id}, {$set: {rand: Math.random()}}) 
}) 
+0

Хорошая идея (не уверен в производительности), но я продолжаю получать Пт 21 ноября 17: 20: 06.451 Выполнение JavaScript не удалось: SyntaxError: Неожиданный токен: – checklist

+0

@checklist, Возможно, вы используете дефис (-) вместо подчеркивания (_) в запросе? Скопируйте и вставьте запрос, который вы используете. –

+0

В одной строке: db.myDoc.find (rand: {$ exists: false}). ForEach (function (mydoc) {db.myDoc.update ({_ id: mydoc._id}, {$ set: {rand: Math .random()}})}) – checklist

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