我已经创建了一个集合,并通过将4个字段分组为唯一字段来添加索引键。
下面是字段和值的示例。
"username":string,
"companyID": ObjectID,
"areaCode": string,
"lotNum":string
companyID的ObjectID,我从另一个集合的文档ID中获取它作为它的ID。
我试图通过MongoDB .Net驱动程序插入,但遇到了一些问题。
Company company = new Company()
{
CompanyName = "xyz"
};
await _company.InsertOneAsync(company); //_company is IMongoCollection object
SomeClass someClass = new SomeClass()
{
UserName = "James",
CompanyID = company.ID, //This is the ObjectID generated by MongoDB
AreaCode = "ABC",
LotNum = "1234a"
};
await _someClass.InsertOneAsync(company); //_someClass is IMongoCollection object
因此,MongoDB中的document对象将如下所示。实际上,我可以使用Compass查看文档。
_id:ObjectID("5b062d5be75ed035f057bf06")
username:"James",
companyID: ObjectID("5b062d5be75ed035f057bf05"),
areaCode: "ABC",
lotNum:"1234a"
现在的问题是,当我尝试使用{companyID:ObjectID("5b062d5be75ed035f057bf05")}
在SomeClass集合中查找文档时,我无法找到它。但如果我使用{companyID:null}
。它正在返回文档。
我不能添加任何用户名相同的新文档,areaCode和lotNum使用不同的companyID,即使ID来自新创建的具有全新ID的公司对象,"as duplicate key error collection“也会发生。MongoDB仍然说它是空的。
我做错了什么吗?我怎样才能解决这个问题。
下面是我的公司和SomeClass的数据对象
public class Company
{
public ObjectId Id { get; set; }
public string CompanyName{ get; set;}
}
public class SomeClass
{
public ObjectId Id { get; set; }
public string UserName { get; set;}
[BsonRepresentation(BsonType.ObjectId)]
public string CompanyID { get; set; }
public string AreaCode{ get; set; }
public string LotNum{ get; set; }
}
发布于 2018-05-25 01:50:35
当您从集合中检索一个文档并获取它的ObjectId时,它是一个字符串。
您需要将其转换为ObjectId类型的object。
新建ObjectId("string objectid")
这就是我们在nodejs中做的事情。请查看C# mongodb驱动程序文档
https://stackoverflow.com/questions/50501828
复制相似问题