我在使用 MongoDb 时遇到了一些麻烦。
假设我有一个 MyObject 集合,其中:
MyObject
{
public Guid Guid { get;set; }
public List<BsonValue> Identifiers { get;set; }
public List<string> Tags { get;set; }
}
现在我插入一堆对象,其标识符设置如下:
new List<BsonValue>{"A"} *
new List<BsonValue>{"D"}
new List<BsonValue>{"A", "B"} *
new List<BsonValue>{"C", "D"}
new List<BsonValue>{"A", "B", "C"} *
new List<BsonValue>{"A", "B", "C", "D"}
现在我带来了一个包含以下值的测试用例:
"A", "B", "C"
我想检索上面标有 * 的记录...我玩弄了 Query.In 但我收到一个错误Cannot deserialize Guid from BsonType ObjectId
一点额外的清晰度:
我已经设法通过代码实现了我想要的。但是,如果有人能指出我更简单的方法,我会很高兴。然而,这将是可行的。
var query = new List<BsonValue>{"A","B","C"};
var results = collection.FindAs<MyObject>(Query.In("Identifiers", query));
var valid = results.Where(r => !r.Identifiers.Except(a).Any()).ToList();