Как обновить данные таблицы базы данных производства mongodb? [Дубликат]

Учитывая ответ @Ben, R выдает ошибку, если df1 не содержит столбец x. Но это можно решить элегантно с помощью paste:

aggregate(paste(Year, Month) ~ Year + Month, data = df1, FUN = NROW)

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

aggregate(paste(Year, Month, Day) ~ Year + Month + Day, data = df1, FUN = NROW)
147
задан randombits 27 January 2012 в 20:55
поделиться

3 ответа

В оболочке Mongo или с любым клиентом Mongodb:

• Для Mongodb> = 3.2:

db.foo.updateMany({}, {$set: {lastLookedAt: Date.now() / 1000}})

См. http : //docs.mongodb.org/manual/tutorial/modify-documents/#update-multiple-documents

  • {} - это условие (пустое условие соответствует любому документу )
  • {$set: {lastLookedAt: Date.now() / 1000}} - это то, что вы хотите сделать

• Для Mongodb> = 2.2:

db.foo.update({}, {$set: {lastLookedAt: Date.now() / 1000}}, { multi: true })

См. http://docs.mongodb.org/manual/tutorial/modify-documents/#update-multiple-documents

  • {} - это условие (пустое условие соответствует любому документу)
  • {$set: {lastLookedAt: Date.now() / 1000}} - это то, что вы хотите сделать
  • {multi: true} - это опция «обновить несколько документов»

• Для Mongodb & lt; 2.2:

db.foo.update({}, {$set: {lastLookedAt: Date.now() / 1000}}, false, true)

См. https://web.archive.org/web/20120613233453/http://www.mongodb.org/display/DOCS / Обновление

  • {} - это условие (пустое условие соответствует любому документу)
  • {$set: {lastLookedAt: Date.now() / 1000}} - это то, что вы хотите сделать
  • false для параметра «upsert» (вставить, если нет, или обновление - не то, что вы хотите)
  • true для параметра «multi» (обновление нескольких записей)
321
ответ дан Philippe Plantier 20 August 2018 в 14:31
поделиться
  • 1
    не должно быть Date.now (). getTime () для отметки времени unix? – randombits 27 January 2012 в 21:05
  • 2
    Date.now () возвращает также метку времени. См. developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… – Philippe Plantier 27 January 2012 в 21:10
  • 3
    Он по-прежнему дает мне дату, где нет подходящего места для всех этих случаев foo. После запуска я делаю db.foo.findOne () и lastLookedAt: 1327691719186, что переводится в jruby-1.6.5: 011 & gt; Time.at (1327691719186) = & gt; Вс Ноя 16 02:19:46 -0500 44042 – randombits 27 January 2012 в 21:16
  • 4
    Мое плохое время POSIX использует секунды, тогда как время Javascript использует миллисекунды. Date.now () / 1000 должно работать. Возможно, вам придется округлить его. – Philippe Plantier 27 January 2012 в 21:20
  • 5
    psh это пустая {}, которая сделала это для меня, спасибо Филу – Jona 13 April 2016 в 13:10

Этот код вам поможет

        Model.update({
            'type': "newuser"
        }, {
            $set: {
                email: "abc@gmail.com",
                phoneNumber:"0123456789"
            }
        }, {
            multi: true
        },
        function(err, result) {
            console.log(result);
            console.log(err);
        })  
7
ответ дан Jitendra 20 August 2018 в 14:31
поделиться

Я использую драйвер MongoDB .NET чуть больше месяца. Если бы я сделал это с помощью .NET-драйвера, я бы использовал метод Update для объекта коллекции. Сначала я построю запрос, который доставит мне все документы, которые меня интересуют, и сделаю обновление в полях, которые я хочу изменить. Обновление в Mongo влияет только на первый документ и для обновления всех документов, полученных в результате запроса, нужно использовать флаг обновления «Multi». Пример кода следует ...

var collection = db.GetCollection("Foo");
var query = Query.GTE("No", 1); // need to construct in such a way that it will give all 20K //docs.
var update = Update.Set("timestamp", datetime.UtcNow);
collection.Update(query, update, UpdateFlags.Multi);
2
ответ дан user1163459 20 August 2018 в 14:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: