代码之家  ›  专栏  ›  技术社区  ›  Bear Bile Farming is Torture

如何在MongoDB中为数组字段的每个元素生成唯一的id

  •  0
  • Bear Bile Farming is Torture  · 技术社区  · 3 年前
    1. 如何为数组字段的每个元素创建一个唯一的ID,其中集合的所有文档都全局保持唯一性?

    2. 是否可以指定为此字段创建唯一索引?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Prashant Pokhriyal    3 年前

    你可以利用 ObjectId 数据类型。 ObjectIds 是12字节的值,保证在集合中的所有文档中都是唯一的。您可以指定 ObjectId 作为插入新文档时数组中字段的值。

    例如,如果您有以下文档:

    {
        _id: ObjectId("5f9b5a6d65c5f09f7b5a6d65"),
        nameOfArrayField: []
    }
    

    可以使用以下命令插入新文档:

    db.collection.insertOne({
        nameOfArrayField: [
            {
                id: new ObjectId(),
                name: "Big Cat Public Safety Law"
            }
        ]
    });
    

    要指定唯一索引,可以使用 createIndex() 方法。

    db.collection.createIndex({ "nameOfArrayField.id": 1 }, { unique: true })
    

    unique: true 选项确保元素数组的id字段对于集合的所有文档都是全局唯一的。它将防止在数组中插入具有相同id字段的重复元素。需要注意的是,这是一个异步操作。您可以使用 db.collection.getIndexes() 方法来检查索引是否已创建。

    推荐文章