Я создал коллекцию и добавил индексный ключ, сгруппировав 4 поля как уникальные.
Вот пример поля и значения.
"username":string,
"companyID": ObjectID,
"areaCode": string,
"lotNum":string
ObjectID компании ObjectID, I 'получаю его из идентификатора документа другой коллекции в качестве идентификатора.
Я попытался вставить через драйвер 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 будет выглядетькак ниже.Я действительно могу просмотреть документ с помощью Compass.
_id:ObjectID("5b062d5be75ed035f057bf06")
username:"James",
companyID: ObjectID("5b062d5be75ed035f057bf05"),
areaCode: "ABC",
lotNum:"1234a"
Теперь проблема в том, что когда я пытался найти документ в коллекции SomeClass с помощью {companyID:ObjectID("5b062d5be75ed035f057bf05")}
, я не могу его найти.Но если я использую {companyID:null}
.Он возвращает документ.
И я не могу добавить какой-либо новый документ с тем же именем пользователя, areaCode и lotNum с другим идентификатором компании, «поскольку сбор ошибок дублирующегося ключа» происходит, даже если идентификатор получен недавно созданнымУ объекта компании новый идентификатор.MongoDB все еще говорит, что это NULL.
Я что-то не так делаю?Как я могу исправить эту проблему.
Вот мой объект данных для Company и 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; }
}