Arrays 如何在MongoDB中将_id和对象id数组指定为复合主键?
在MongoDB数据库中,创建了一个集合,并插入了一些数据: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
>>> 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) “应用参数”
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] } }