我有一个问题。我有一个现有的mongodb集合,我需要谈论包含一个_id objectId和一个UUID保存为字符串id字段。
例子我需要根据uid列表获取文档->它们基本上是文档id字段中的uid。
我做了一个网关来做到这一点。(不要介意TryAsync的东西,基本上是一个单子包裹在一个任务)
public TryAsync<IEnumerable<T>> ByIds(List<Guid> ids)
{
var filter = Builders<T>.Filter.In("id", ids.Select(id => id.ToString()));
return TryAsync<IEnumerable<T>>.Apply(() => new List<T>()).SetAsync(() => Collection.Find(filter).ToListAsync());
}
T基本上是:
public interface IDomainObject
{
string id { get; set; }
}
当我运行代码时,我没有得到任何结果。
所以我决定做一些更多的测试,我已经添加了_id以及,并试图获取它基于一个固定_id。
然后我得到这个消息=>MongoDB.Bson.BsonSerializationException: '类型'RG.Product.Core.Process的属性'Id'。
产品'不能使用'_id'元素名,因为它已经被属性'_id "使用了似乎你不能在同一个对象上有一个_id和id ?
我对_id对象id不感兴趣,我只想根据id获取没有_id字段的文档。希望有人能给我指个方向?
看看你可以在MongoDB中使用的属性。
public class DBInfo
{
[BsonId] // With this attribute you can define the _id field name
public ObjectId recordId;
[BsonIgnore]
public DBInfo child; // Ignore this variable
[BsonElement("sp")] // Rename this variable
public string searchPolicy;
[BsonExtraElements] // I always add this attribute on object with Id, this avoid deserialization exception in case of schema change
// All element the deserialization can't match will be added here
public BsonDocument catchAll;
}
https://github.com/iso8859/learn-mongodb-by-example/blob/main/dotnet/01%20-%20Begin/04%20-%20Attributes.cs