【发布时间】:2021-09-08 03:04:38
【问题描述】:
我有一个简单的集合 alert 带有 _id 和 observables 数组
例如
{
_id: '60d496b2d08d5f0630dea368',
observables: ['10d496b2d08d5f0630dea368', '20d496b2d08d5f0630dea368'],
}
我创建了查询来创建没有数组的新集合,格式如下:
{
_id: <default id>,
alertId: '60d496b2d08d5f0630dea368',
observableId: '10d496b2d08d5f0630dea368',
{
_id: <default id>,
alertId: '60d496b2d08d5f0630dea368',
observableId: '20d496b2d08d5f0630dea368',
}
另外,为了防止重复,创建了唯一索引
collection.createIndex({ observableId: 1, alertId: 1 }, { unique: true });
这是我的查询:
db.collection.aggregate([
{
"$unwind": "$observables"
},
{
"$project": {
_id: 0,
observableId: "$observables",
alertId: "$_id"
}
},
{
"$merge": {
into: {
db: "some-db",
coll: "some-coll"
},
on: [
"observableId",
"alertId"
]
}
}
])
结果出现错误 *MongoError: Cannot find index to verify that join fields will be unique
但是索引已经创建,所以知道如何解决这个错误吗?
【问题讨论】:
-
删除 $merge 的
on部分。 -
您确定唯一索引在正确的数据库和集合上吗?
标签: mongodb indexing aggregation-framework