gpt4 book ai didi

c# - 如何使用 C# 和 MongoDB 'AND' 多个 $elemMatch 子句?

转载 作者:IT老高 更新时间:2023-10-28 13:21:26 25 4
gpt4 key购买 nike

我将 10Gen 认可的 c# 驱动程序用于 mongoDB 用于 c# 应用程序和数据浏览,我正在使用 Mongovue。

以下是两个示例文档架构:

{
"_id": {
"$oid": "4ded270ab29e220de8935c7b"
},
"Relationships": [
{
"RelationshipType": "Person",
"Attributes": {
"FirstName": "Travis",
"LastName": "Stafford"
}
},
{
"RelationshipType": "Student",
"Attributes": {
"GradMonth": "",
"GradYear": "",
"Institution": "Test1",
}
},
{
"RelationshipType": "Staff",
"Attributes": {
"Department": "LIS",
"OfficeNumber": "12",
"Institution": "Test2",
}
}
]
},

{
"_id": {
"$oid": "747ecc1dc1a79abf6f37fe8a"
},
"Relationships": [
{
"RelationshipType": "Person",
"Attributes": {
"FirstName": "John",
"LastName": "Doe"
}
},
{
"RelationshipType": "Staff",
"Attributes": {
"Department": "Dining",
"OfficeNumber": "1",
"Institution": "Test2",
}
}
]
}

我需要一个查询来确保满足两个 $elemMatch 条件,以便我可以匹配第一个文档,但不能匹配第二个文档。以下查询在 Mongovue 中有效。

{
'Relationships': { $all: [
{$elemMatch: {'RelationshipType':'Student', 'Attributes.Institution': 'Test1'}},
{$elemMatch: {'RelationshipType':'Staff', 'Attributes.Institution': 'Test2'}}
]}
}

如何在我的 c# 代码中执行相同的查询?

最佳答案

无法使用 c# 驱动程序构建上述查询(至少在 1.0 版中)。

但是您可以构建另一个更清晰的查询,它会返回相同的结果:

{ "Relationships" : 
{ "$elemMatch" :
{ "RelationshipType" : "Test",
"Attributes.Institution" : { "$all" : ["Location1", "Location2"] }
}
}
}

还有来自 c# 的相同查询:

Query.ElemMatch("Relationships", 
Query.And(
Query.EQ("RelationshipType", "Test"),
Query.All("Attributes.Institution", "Location1", "Location2")));

关于c# - 如何使用 C# 和 MongoDB 'AND' 多个 $elemMatch 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6266994/

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