gpt4 book ai didi

c# - 在同一节点上构建过滤器

转载 作者:可可西里 更新时间:2023-11-01 10:02:03 26 4
gpt4 key购买 nike

我遇到一个问题,我需要对数据库中的对象应用过滤器。这是一个例子:

"Object": {
"Properties" : [
{
"Key" : "Date",
"Value" : "9/12/2017"
},
{
"Key" : "Primary Location",
"Value" : "Moon"
},
{
"Key" : "Requested By",
"Value" : "drei"
},
{
"Key" : "Secondary Location",
"Value" : "Canada"
}
]
}

假设我想找到“主要位置”为“加拿大”的任何对象...我似乎不知道该怎么做。这是我的尝试:

var builder = Builders<Object>.Filter;
FilterDefinition<Object> filter = builder.And(
builder.Eq("Properties.Key", "Primary Location"),
builder.Eq("Properties.Value", "Canada"));

本质上,我为键和值使用了 And Builder,但这并没有将它们组合在一起来执行过滤器。它看到有一个带有“主要位置”的键,并且在属性中也有一个带有“加拿大”的值并将返回上述对象。

我应该如何编写过滤器以过滤相同的值和 key 对?

最佳答案

您需要使用 ElemMatch :

var builder = Builders<Object>.Filter;
var subbuilder = Builders<SubObject>.Filter;
FilterDefinition<Object> filter
= builder.ElemMatch("Properties", subbuilder.And(
subbuilder .Eq("Key", "Primary Location"),
subbuilder .Eq("Value", "Canada")
));

这还允许您使用 positional operator $执行更新时:

updateBuilder.Set("Properties.$.Value", "Test")

或者如果您正在使用表达式:

updateBuilder.Set(o => o.Properties[-1].Value, "Test")

关于c# - 在同一节点上构建过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50263770/

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