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

MongoDB如何查询指定服务器上处于active状态的服务

问题根源

你之前的查询逻辑是匹配「instances数组中存在至少一个元素的worker_location为server2,同时数组中存在至少一个元素的type为active」,两个条件不需要命中同一个数组元素,因此test2也会被匹配到:test2的instances数组里存在worker_location为server2的元素,也存在type为active的元素,只是两个条件没有命中同一个实例。

正确查询语句

使用$elemMatch运算符要求同一个数组元素同时满足所有查询条件即可:

db.service.find({
  "env": "pilot",
  "instances": {
    "$elemMatch": {
      "worker_location": "server2",
      "type": "active"
    }
  }
}, {
  "service_name": 1,
  "_id": 0
})
效果说明

上述查询只会返回满足「存在单个实例同时运行在server2上、且状态为active」的服务,执行后只会返回service_name为test1的结果,完全符合你的预期。


内容的提问来源于stack exchange,提问作者SVill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:27:04