node.js - 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
到集合中。两次插入都没有成功。它抛出了这样的错误:
但在那之后,当我试图获取这个集合的索引时。我找不到!
我不明白这里发生了什么。如何解决这个问题?
解决方案
推荐阅读
- javascript - 用JS给一个div添加自动刷新
- prometheus - 试图让我理解我从 Prometheus 中的 Rate 和 increase 函数中得到的东西
- reactjs - 样式化的组件样式未显示在 Gatsby 站点的样式标记内
- c# - OpenXML 更改默认跟踪更改设置
- machine-learning - 在机器学习算法的背景下,什么是“刷新率”?
- python - 如何制作具有多个根树的圆形树
- python - 如何更改启动画面中的图像
- android - 如何修复 kotlin 中的 WebView SSL 错误处理程序问题,以便通过 Google Play 审核
- python - 为什么在控制台中可单击复选框但在 Selenium 代码中不可单击?
- javascript - 如何检查我是否刚刚接受了 java 脚本中的不和谐服务器邀请