gpt4 book ai didi

c# - 如何在 c# mongo db 驱动程序中过滤数组元素

转载 作者:行者123 更新时间:2023-12-04 15:52:10 26 4
gpt4 key购买 nike

我在这样的文档中有数组

 {
"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# 驱动程序中过滤数组值。

最佳答案

您的示例文档包含一个数组数组。要引用索引 1 处的项目,您可以利用这样一个事实,即在 JS 中,数组可以被视为一个对象,其中索引是属性,因此在您的情况下,您存储的内容也可以被解释作为:

{
"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" } });

关于c# - 如何在 c# mongo db 驱动程序中过滤数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53428666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com