Arrays 如何在MongoDB中将_id和对象id数组指定为复合主键?

Arrays 如何在MongoDB中将_id和对象id数组指定为复合主键?,arrays,mongodb,indexing,duplicates,composite-primary-key,Arrays,Mongodb,Indexing,Duplicates,Composite Primary Key,在MongoDB数据库中,创建了一个集合,并插入了一些数据: >>> db.createCollection("Restaurants") >> { "ok" : 1 } >> db.Restaurants.insert({ "_id": "coolDinings", >> "AppliedParameters": [ ObjectId("5617a7a52da21a733547b8da"), >> ObjectId("5617

在MongoDB数据库中,创建了一个集合,并插入了一些数据:

>>> db.createCollection("Restaurants")
>> { "ok" : 1 }

>> db.Restaurants.insert({ "_id": "coolDinings",
>> "AppliedParameters": [ ObjectId("5617a7a52da21a733547b8da"),
>> ObjectId("5617a5102da21a733547b8d9") ], "Review": "excellent    SeaFood", "Region": "USA" })

MangGDB默认行为是将“yID”作为主键。

但是,我需要一个由以下字段组成的复合主键:

  • -1) “_id”
  • -2) “应用参数”
“AppliedParameters”是一个ObjectId数组,它存储的ObjectId数量可以从0到大约20或30个不等

我知道以下代码将在上述两个字段上创建索引:

db.Restaurants.ensureIndex( { "_id": 1,"AppliedParameters": 1 }, { unique:true, sparse:true } ); 
然而,我的愿望是确保前面提到的代码行将创建一个复合主键

无论如何,我都运行了代码

为了检查是否创建了复合密钥,我只需重新运行第一次数据插入,因为我希望它会抛出与复合主键重复相关的错误:

    >> db.Restaurants.insert({ "_id": "coolDinings",
    >> "AppliedParameters": [ ObjectId("5617a7a52da21a733547b8da"),
    >> ObjectId("5617a5102da21a733547b8d9") ], "Review": "excellent        SeaFood", "Region": "USA" })
但是,它只给出了以下错误:

E11000重复键错误索引:test.Restaurants.$id重复键:{:“coolDinings”}

上述错误似乎表明“_id”重复。我希望Mongo客户机声明,不允许使用重复的复合主键

如何执行上述任务?

mongodb中没有“复合”主键(从某种意义上说,它们跨越多个字段)
\u id
是唯一的主键

如果需要由多个数据段组成的复杂主键,请将它们全部插入
\u id
字段

请注意,
\u id
值不能是数组(必须是基元或对象之一)

做不到: 可以做: mongodb中没有“复合”主键(从某种意义上说,它们跨越多个字段)
\u id
是唯一的主键

如果需要由多个数据段组成的复杂主键,请将它们全部插入
\u id
字段

请注意,
\u id
值不能是数组(必须是基元或对象之一)

做不到: 可以做: mongodb中没有“复合”主键(从某种意义上说,它们跨越多个字段)
\u id
是唯一的主键

如果需要由多个数据段组成的复杂主键,请将它们全部插入
\u id
字段

请注意,
\u id
值不能是数组(必须是基元或对象之一)

做不到: 可以做: mongodb中没有“复合”主键(从某种意义上说,它们跨越多个字段)
\u id
是唯一的主键

如果需要由多个数据段组成的复杂主键,请将它们全部插入
\u id
字段

请注意,
\u id
值不能是数组(必须是基元或对象之一)

做不到: 可以做:
_id字段可以包含数组,请查看此db.collection.insert({{u id:{“a”:“B”,“C”:[“D”,“F”]},“status”:“Hello”})我的目标是帮助用户创建包含多个字段的{u id字段。nvm您更新了您的帖子。_id字段可以包含数组,请查看此db.collection.insert({_id:{“a”:“B”,“C”:[“D”,“F”]},status:“Hello”})我的目标是帮助用户创建包含多个字段的_id字段。nvm您更新了您的帖子。_id字段可以包含数组,请查看此db.collection.insert({_id:{“a”:“B”,“C”:[“D”,“F”]},status:“Hello”})我的目标是帮助用户创建包含多个字段的_id字段。nvm您更新了您的帖子。_id字段可以包含数组,请查看此db.collection.insert({_id:{“a”:“B”,“C”:[“D”,“F”]},status:“Hello”})我的目标是帮助用户创建包含多个字段的_id字段。nvm您更新了您的帖子。如果有一个
\u id
字段包含一个最多包含30个objectid的数组,这听起来很糟糕。你确定要这么做吗?@johnyhk-Thx。我现在采取了一种不同的方法。有一个
\u id
字段,其中包含一个最多有30个objectid的数组,这听起来很糟糕。你确定要这么做吗?@johnyhk-Thx。我现在采取了一种不同的方法。有一个
\u id
字段,其中包含一个最多有30个objectid的数组,这听起来很糟糕。你确定要这么做吗?@johnyhk-Thx。我现在采取了一种不同的方法。有一个
\u id
字段,其中包含一个最多有30个objectid的数组,这听起来很糟糕。你确定要这么做吗?@johnyhk-Thx。我现在采取了不同的方法。
{ _id: [1, 2, 3] }
{ _id: { a: 1, b: [2, 3] } }