.net核心应用程序需要与mongodb现有的_id和id集合对话



我有一个问题。我有一个现有的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

相关内容

  • 没有找到相关文章

最新更新