gpt4 book ai didi

c# - 如何将具有 LUUID 值的查询反序列化为 BsonDocument

转载 作者:行者123 更新时间:2023-12-03 15:59:14 26 4
gpt4 key购买 nike

我正在尝试将带有 LUUID(或本示例中的 NUUID)的过滤器反序列化为 BsonDocument:

var tmpQry = "{'ValueId': NUUID('ca7ac84f-18bf-42f0-b028-333ed144c549')";
var tmpBson = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(tmpQry);

并收到错误:

System.FormatException: 'JSON reader was expecting a value but found 'NUUID'.'

我知道,LUUID 对于 JSON 无效,但是是否可以从我的字符串中获取 BsonDocument?

在我的特殊情况下,我无法实现 MongoDB 嵌套 $elemMatch 查询,如this issue 。但我的查询包含标识符:

db.getCollection('my_db').aggregate([
{
$match: {
'Event.key_attributes': {
$all: [
{ '$elemMatch': { 'Type.Code': 'code1', 'ValueId': LUUID('00000000-0000-0000-0000-000000000001') } },
{ '$elemMatch': { 'Type.Code': 'code2', 'ValueId': LUUID("00000000-0000-0000-0000-000000000002") } },
{ '$elemMatch': { 'Type.Code': 'code3', 'ValueId': LUUID("00000000-0000-0000-0000-000000000003") } }
]
}
}
},
{
$group: {
'_id': '$$CURRENT.Event.type._id',
'code': { '$last': '$$CURRENT.Event.type.Code' },
'value': { '$sum': '$$CURRENT.Event.value' }
}
}
]);

,我什至无法将其反序列化为 BsonDocument。我的问题有解决办法吗?非常感谢。

最佳答案

终于解决了这个问题。我没有尝试从字符串序列化查询,而是创建了 BsonDocument 管道:

var filter = new BsonDocument {{
"$match", new BsonDocument {{
"Event.key_attributes", new BsonDocument {{
"$all", new BsonArray().AddRange(limit.KeyAttributes.Select(ka => new BsonDocument(
"$elemMatch", new BsonDocument().AddRange(new List<BsonElement>{
new BsonElement("Type.Code", ka.Type.Code),
new BsonElement("ValueId", ka.ValueId)
})
)).ToList())
}}
}}
}};


var group = new BsonDocument {{
"$group", new BsonDocument().AddRange(new List<BsonElement>{
new BsonElement("_id", "$$CURRENT.Event.type._id"),
new BsonElement("code", new BsonDocument{{
"$last", "$$CURRENT.Event.type.Code" }}),
new BsonElement("value", new BsonDocument{{
"$sum", "$$CURRENT.Event.value" }})
})
}};

var pipeline = new BsonDocument[]
{
filter,
group
};

var result = collection.Aggregate<MyOutputClass>(pipeline).ToListAsync();

Guid 没有问题。

关于c# - 如何将具有 LUUID 值的查询反序列化为 BsonDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60639978/

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