首页 > 解决方案 > Nodejs - mongodb 无法获取稀疏索引

问题描述

我正在node-mongodb-native用作我的 Node.js 应用程序的 MongoDb 驱动程序。这是我的插入功能:

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到集合中。两次插入都没有成功。它抛出了这样的错误:

这里抛出了重复索引值的错误

但在那之后,当我试图获取这个集合的索引时。我找不到!

这里我们只看到主 <code>_id</code> 索引存在

我不明白这里发生了什么。如何解决这个问题?

标签: node.jsmongodbindexingnode-mongodb-native

解决方案


推荐阅读