【发布时间】:2016-08-10 13:23:41
【问题描述】:
我有这个查询:
string jsonquery = "{
$and : [{
WordsData : {
$elemMatch : {
UserId : ObjectId('57a87f5cc48933119cb96f93'),
UserId : ObjectId('57a87f5cc48933119cb96f94')
}
}
}, {
WordsData : {
$not : {
$elemMatch : {
MatchType : 2
}
}
}
}
]
}"
如果我在 mongo 控制台中执行它可以正常工作!
我正在尝试在 c# 程序中运行此查询。运行相同的 json 查询我得到以下错误:
BsonDocument doc = BsonSerializer.Deserialize<BsonDocument>(jsonquery);
[Error] --> {"Duplicate element name 'UserId'."}
为什么在 c# 中不起作用?
【问题讨论】:
-
您的
$elemMatch对象中不能有两个UserId字段。 shell 只是忽略其中一个。 -
为什么这个问题只出现在 .NET 中?因为相同的查询可以正常工作,例如在 RoboMongo 客户端控制台中!如何在不为同一个 $elemMatch 多次传递“UserId”的情况下获得相同的结果?我想要做的是一个查询,它返回 WordsData 数组中的所有文档,其中一个元素为 UserId = {57a87f5cc48933119cb96f93},另一个元素为 UserId = {57a87f5cc48933119cb96f94}
-
你能发布示例文档吗?
-
@profesor79:见我之前的帖子Possible query with MongoDB