Я использую node-mongodb-native
в качестве драйвера MongoDb для моего приложения Node.js.Вот моя функция вставки:
async create(data) {
return new Promise((resolve, reject) => {
const datetime = Date.parse(new Date());
data._id = new ObjectID().toString();
data.createdAt = datetime;
data.updatedAt = datetime;
data.deleted = false;
this._db.collection(this._table).ensureIndex({ 'body.flowid': 1 },
{ unique: true, dropDups: true, sparse: true },
async (err) => {
if (err) { return reject('Duplicate phone number'); }
try {
await this._db.collection(this._table).insertOne(data);
return resolve(data);
} catch (error) {
return reject(error.message);
}
});
});
}
При разреженном индексе для поля 'body.flowid
я должен индексировать это поле только в том случае, если оно существует в документе.Затем я попытался вставить в коллекцию два документа с одинаковым body.flowid
.Ни одна из двух вставок не удалась.Выкидывает ошибку вот так:
Но после этого, когда я попытался получить индексы этой коллекции.Я не мог найти это!
_id index exists">
Я не понимаю, что здесь произошло.Как это исправить?