我有用户数据的mongoose架构:
// user schema
const User = new Schema(
{
name: {type: String},
email: {type: String, unique: true},
// other fields
})
用户的每日统计架构:
// Stats schema
const Stats = new Schema(
{
dateCreated: {type: Date, default: Date.now()},
stepsWalked: {type: Number, default: 0},
// other fields
userId: String // user id field
})
当我尝试生成具有相同用户ID的多个Stats架构对象时:
for (let i = 0; i < 40; ++i) {
statsData = await Stats.create({
userId: userData._id
})
}
我在循环的第二次迭代中得到了mongoose重复异常。 堆栈跟踪:
MongoError: E11000 duplicate key error collection: 5909aed3df9db12e2b71a579_.stats index: userId_1 dup key: { : "5991c027a572690bfd322c08" }
at Function.MongoError.create (node_modules/mongodb-core/lib/error.js:31:11)
at toError (node_modules/mongodb/lib/utils.js:139:22)
at node_modules/mongodb/lib/collection.js:669:23
at handleCallback (node_modules/mongodb/lib/utils.js:120:56)
at node_modules/mongodb/lib/bulk/unordered.js:465:9
at handleCallback (node_modules/mongodb/lib/utils.js:120:56)
at resultHandler (node_modules/mongodb/lib/bulk/unordered.js:413:5)
at node_modules/mongodb-core/lib/connection/pool.js:469:18
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
如何与mongoose实现一对多的关系? 我为单个用户提供了大量的统计数据,因此我无法将统计数据存储为用户模式的一部分,如下所示:
// user schema
const User = new Schema(
{
name: {type: String, default: 'NaN'},
email: {type: String, unique: true, default: 'NaN'},
// other fields
stats: [Stats] // to many docs to store array in schema
})
答案 0 :(得分:0)
我遇到类似的问题,我遇到了重复的密钥错误。对我来说发生的事情是在一个子文档中,我以前在一个字段上分配了一个唯一的约束。在纠正之后,我继续得到错误。所以我可以创建一个实例,但在创建第二个实例时总是会出错。
对我来说,这是另一位评论者提到的修正案,就是放弃那个系列。删除集合后,新文档和子文档创建工作正常。