MongoDB Driver C#:如何正确查询Name在指定数组且与MiddleName相等的文档
正确的MongoDB查询实现方式
你的原查询存在两个问题:
- 使用了MongoDB不存在的
@eq操作符,正确的相等判断操作符是$eq; - 普通查询条件里无法直接用字符串引用其他字段的值,必须借助
$expr来实现字段间的比较逻辑。
以下是两种可行的正确写法:
写法一(保留$and,逻辑更清晰)
db.Names.find({ $and: [ { "Name": { $in: ["Piotr", "John", "Adam"] } }, { $expr: { $eq: ["$Name", "$MiddleName"] } } ] })
写法二(简化版,MongoDB默认多条件为逻辑与)
db.Names.find({ "Name": { $in: ["Piotr", "John", "Adam"] }, $expr: { $eq: ["$Name", "$MiddleName"] } })
关键说明
$expr是核心:它允许在查询中使用聚合表达式,让你可以直接比较当前文档的两个字段值;- 字段引用要加
$:$Name和$MiddleName分别代表当前文档的Name和MiddleName字段值,这样$eq就能判断二者是否相等。
内容的提问来源于stack exchange,提问作者Horyzont
相关产品推荐
相关产品推荐

