作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我将 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/
我是一名优秀的程序员,十分优秀!