#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, я забыл прочитать название, пока писал ответ. Я был неосторожен. Я обновил ответ. Надеюсь, это поможет и будет тем, что вы ищете. Еще раз извините, я приношу свои извинения.