You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB Driver C#:如何正确查询Name在指定数组且与MiddleName相等的文档

正确的MongoDB查询实现方式

你的原查询存在两个问题:

  1. 使用了MongoDB不存在的@eq操作符,正确的相等判断操作符是$eq;
  2. 普通查询条件里无法直接用字符串引用其他字段的值,必须借助$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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:24:25