Как вставить документ в коллекцию mongodb временных рядов, которая еще не создана?

#database #mongodb #insert

Вопрос:

Я хочу вставить документы в коллекцию временных рядов (которая будет создана только при первой вставке документа). Это возможно? Используя что-то вроде db.insertOne(upsert, params), где «params» указывает, что это коллекция временных рядов.

Ответ №1:

Пока нет способа создать коллекцию временных рядов с помощью insert команды, если она не существует.

Вы должны выполнить условие if, которое проверяет, существует ли коллекция заранее, и выполнить операцию вставки.

Вы можете использовать findOne трюк, при котором вы проецируете только _id ключ и проверяете, возвращен ли документ, хотя он попытается выполнить команду «Создать базу данных», даже если она существует, но в ней 0 документов, что намного лучше, чем List-Collection команда и перебор коллекций в вашей БД.

 var foundDoc = db.collection.findOne({}, {"_id": 1});
if (foundDoc == null) {
  db.createCollection(
    "collection",
    {
       "timeseries": {
          "timeField": "timestamp",
       },
    });
}
 

Комментарии:

1. Да, но какие параметры вы используете в команде insert, чтобы указать, что коллекция является временным рядом, а не обычным?

2. Извините @GabrielCard, я забыл прочитать название, пока писал ответ. Я был неосторожен. Я обновил ответ. Надеюсь, это поможет и будет тем, что вы ищете. Еще раз извините, я приношу свои извинения.