允许数组或数组中的相同元素用于多个文档

时间:2019-07-20 12:15:28

标签: mongodb mongoose

我有一个这样的架构:

const user = mongoose.Schema(
  {
    groupIds: { type: [String], message: 'GROUPIDS' }
  },
  { timestamps: true }
);

因此,用户将具有一个数组groupId,并且这些ID可以重复,并且可以在多个用户中找到,就像这样:

user1: { groupIds: ['1', '2', '2', ...] }
user2: { groupIds: ['2', '3', '4', '4', ...] }

当我尝试用此类数据填充数组时,mongodb抛出此错误:

MongoError: E11000 duplicate key error collection: 'user' index: groupIds_1 dup key: { : "2" }

要使用我的用户填写groupId,请使用:

const user = await User.findOne({ _id: userId });

,如果找到用户,我将创建或更新用户:

user.groupIds = groupsIds;
user.save();

或:

  const newUser = new User({
    _id: mongoose.Types.ObjectId(userId),
    groupIds: groupsIds
  });
user.save()

我应该这样放置我的元素吗?

groupIds: [{'1'}, {'2'}, ...]

0 个答案:

没有答案