我在这样的文档中有数组
{
"samples": [
[
25,
"1535530415"
],
[
"45",
"1535530415"
]
]
}
我尝试根据每个数组的第二个值获取值
我的过滤器查询是
var collection = database.GetCollection<BsonDocument>("History");
FilterDefinition<BsonDocument> filterDefintion = null ;
ProjectionDefinition<BsonDocument> project = Builders<BsonDocument>.Projection.Include("samples").Exclude("_id");
filterDefintion = Builders<BsonDocument>.Filter.Eq("samples[1]","1535530415");
但是它得到一个空数组。如何在mongo c#驱动程序中过滤数组值。
答案 0 :(得分:1)
您的样本文档包含一个数组数组。要在索引1
处引用项目,您可以利用以下事实:在JS中,可以将数组视为对象,其中索引是属性,因此在您的情况下,您要存储的内容也可以解释为: / p>
{
"samples": [
{
"0": 25,
"1": "1535530415"
},
{
"0": 45,
"1": "1535530415"
}
]
}
知道可以使用$elemMatch来引用正确的元素:
db.History.find({ "samples": { $elemMatch: { 1: "1535530415" } } })
或使用C#代码:
filterDefintion = Builders<BsonDocument>.Filter.ElemMatch<BsonDocument>("samples", new BsonDocument() { { "1", "1535530415" } });