c# - 如何正确使用 InsertMany Mongodb C#
问题描述
嗨,我不会使用 InsertMany 方法将一些合成数据传递到我的数据库,我已经编写了流动代码:
我的Main
:
static void Main(string[] args)
{
MongoCRUD db = new MongoCRUD("testClass");
List<GlobalUrbanPoint> syntheticData = CreateSunfeticData(20);
db.InsertMultipleRecords<GlobalUrbanPoint>("geo3", syntheticData);
}
我的模型课:
public class GlobalUrbanPoint
{
[BsonId]
public ObjectId Id{ get; set; }
public string NAME { get; set; }
}
合成数据的功能:
public static List<GlobalUrbanPoint> CreateSunfeticData(int NumberOfDocumet)
{
List<GlobalUrbanPoint> SyntheticList = new List<GlobalUrbanPoint>();
var SyntheticObject = new GlobalUrbanPoint();
for (var i = 1; i < NumberOfDocumet; i++)
{
SyntheticObject.NAME = (i+1).ToString();
SyntheticList.Add(SyntheticObject);
}
return SyntheticList;
}
对于我的操作,我使用 MongoCRUD
public class MongoCRUD
{
private IMongoDatabase db;
public MongoCRUD(string database)
{
var client = new MongoClient();
db = client.GetDatabase(database);
}
public void InsertRecord<T>(string table, T record)
{
var collection = db.GetCollection<T>(table);
collection.InsertOne(record);
}
public void InsertMultipleRecords<T>(string table, List<T> records)
{
var collection = db.GetCollection<T>(table);
collection.InsertMany(records);
}
}
当我运行代码时,我收到一个错误 E11000 重复密钥错误集合。我检查了 InsertMany 的定义,它需要 arguments IEnumerable<TDocument> documents
。这是转换为的简单List<T>
方法IEnumerable<TDocument>
?我需要更改我的合成函数或 InsertMultipleRecords 函数。有什么建议吗?
感谢您的时间。
解决方案
经过一番挖掘,我发现我创建的对象synthetic function
具有相同的_id。为此,我需要在 for 循环内更改对象的创建。而我的问题不在InsertMultipleRecords
.
public static List<GlobalUrbanPoint> CreateSunfeticData(int NumberOfDocumet)
{
List<GlobalUrbanPoint> SyntheticList = new List<GlobalUrbanPoint>();
for (var i = 1; i < NumberOfDocumet; i++)
{
var SyntheticObject = new GlobalUrbanPoint();
SyntheticObject.NAME = (i+1).ToString();
SyntheticList.Add(SyntheticObject);
}
return SyntheticList;
}
推荐阅读
- reactjs - 如何在纯 HTML 上使用 React Router,如浏览器上的 React
- r - R 闪亮的应用程序运行后如何存储值?
- r - data.table 按 2 周或 6 个月分组
- php - 计算两个日期之间星期天的小时数
- node.js - Node.js - NODE_ENV 未定义
- json - React Native flatlist specific data
- python - 过滤数据框单元格中包含的数据框列表值
- xamarin - 如何在导航到新视图模型时传递参数和设置属性 (initializeAsync)
- eclipse - 无法使用 Eclipse 插件连接到 Azure Devops
- excel - 我的第二个子在第一个子中调用时不起作用,但如果单独启动则可以