按文件

时间:2016-01-26 16:45:46

标签: c# mongodb mongodb-.net-driver

我使用MongoDB存储一些数据。文档有一些必填字段和一组可选字段。可以有任意数量的可选字段(这是元数据):

class DataItem {
    public int id {get; set;}
    public string Comment { get; set; }
    [BsonExtraElementsAttribute]
    BsonDocument Metadata { get; set; }     
}

不同文档的元数据字段名称可能不同,所以我不知道这些名称。

我需要查询此类文档,其中元数据的任何字段都包含特定值。

我试过了:

var query = "<some value>";
var res = collection.Find(di => di.Metadata.ContainsValue(BsonValue.Create(query))).ToListAsync();

但是这段代码抛出了异常,因为那里不支持ContainsValue()方法。当我尝试这个时:

var res = collection.Find(di => di.Metadata.Values.Contains(BsonValue.Create(query))).ToListAsync();

返回空结果集。我认为问题出在[BsonExtraElementsAttribute]中,但我无法改变它。有办法吗?

0 个答案:

没有答案