在要插入 mongo db 的词典列表中设置唯一字段
Set unique field in list of dictionaries to be inserted into mongo db
我有一个看起来像这样的词典列表;
json_data = [
{
"CODE": "018906",
"X": "29813.66349",
"Y": "28697.520760000003"
},
{
"CODE": "018907",
"X": "30041.8389",
"Y": "28602.98724"
},
{
"CODE": "018910",
"X": "31966.120789999997",
"Y": "29115.75337"
},
]
我试图将 json_data
插入 mongodb 集合 mongo_collection
。
mongo_collection.insert_many(json_data)
它运行成功了。但是,我希望键字段 CODE
是唯一的,如果存在重复,插入应该失败。上面的行将插入每个文档,即使有重复的 CODE
。如何使 CODE
键唯一?我愿意使用 python 像 mongoengine 这样的库。
我希望CODE
成为关系数据库中的主键。
我正在使用 python 3.7、mongodb 4.2.7 和 pymongo。
插入之前,
您需要在 MongoDB 中创建一个 index
并将 CODE
字段标记为唯一索引
db.mongo_collection.createIndex({CODE:1}, {unique:true})
如果您尝试插入已存在的 CODE
,这将确保您得到重复键错误。
如果您无权访问 MongoDB 服务器。
您需要使用与 CODE
相同的值填充 _id
。由于 _id 是 mongo 中的默认主索引。
json_data = [
{
"_id": "018906",
"CODE": "018906",
"X": "29813.66349",
"Y": "28697.520760000003"
},
{
"_id": "018907",
"CODE": "018907",
"X": "30041.8389",
"Y": "28602.98724"
},
{
"_id": "018910",
"CODE": "018910",
"X": "31966.120789999997",
"Y": "29115.75337"
},
]
我想根据 Anurag Wagh 的回答回答我自己的问题,因为他使用的语法不是 python。我已将他的回答标记为正确答案。
由于我使用的是pymongo,所以代码的语法应该是;
import pymongo
mongo_collection.create_index([("CODE", pymongo.ASCENDING)], unique=True)
我有一个看起来像这样的词典列表;
json_data = [
{
"CODE": "018906",
"X": "29813.66349",
"Y": "28697.520760000003"
},
{
"CODE": "018907",
"X": "30041.8389",
"Y": "28602.98724"
},
{
"CODE": "018910",
"X": "31966.120789999997",
"Y": "29115.75337"
},
]
我试图将 json_data
插入 mongodb 集合 mongo_collection
。
mongo_collection.insert_many(json_data)
它运行成功了。但是,我希望键字段 CODE
是唯一的,如果存在重复,插入应该失败。上面的行将插入每个文档,即使有重复的 CODE
。如何使 CODE
键唯一?我愿意使用 python 像 mongoengine 这样的库。
我希望CODE
成为关系数据库中的主键。
我正在使用 python 3.7、mongodb 4.2.7 和 pymongo。
插入之前,
您需要在 MongoDB 中创建一个 index
并将 CODE
字段标记为唯一索引
db.mongo_collection.createIndex({CODE:1}, {unique:true})
如果您尝试插入已存在的 CODE
,这将确保您得到重复键错误。
如果您无权访问 MongoDB 服务器。
您需要使用与 CODE
相同的值填充 _id
。由于 _id 是 mongo 中的默认主索引。
json_data = [
{
"_id": "018906",
"CODE": "018906",
"X": "29813.66349",
"Y": "28697.520760000003"
},
{
"_id": "018907",
"CODE": "018907",
"X": "30041.8389",
"Y": "28602.98724"
},
{
"_id": "018910",
"CODE": "018910",
"X": "31966.120789999997",
"Y": "29115.75337"
},
]
我想根据 Anurag Wagh 的回答回答我自己的问题,因为他使用的语法不是 python。我已将他的回答标记为正确答案。
由于我使用的是pymongo,所以代码的语法应该是;
import pymongo
mongo_collection.create_index([("CODE", pymongo.ASCENDING)], unique=True)