Node.js环境下查询满足数组匹配与状态条件的MongoDB语句怎么写?
MongoDB Node.js 查询语句解决方案
你需要的查询可以通过MongoDB的$in操作符配合等值匹配实现,两种常用场景的写法如下:
官方mongodb驱动写法
const { MongoClient } = require('mongodb'); const arr = ['0-3333','0-22222','0-11122']; async function queryDevice() { const client = new MongoClient('你的MongoDB连接字符串'); try { await client.connect(); const db = client.db('你的数据库名'); // 执行查询 const queryResult = await db.collection('device').find({ 'properties.status': 'OK', 'properties.device': { $in: arr } }).toArray(); return queryResult; } finally { await client.close(); } }
Mongoose 写法
const arr = ['0-3333','0-22222','0-11122']; // DeviceModel为device集合对应的Mongoose模型 const queryResult = await DeviceModel.find({ 'properties.status': 'OK', 'properties.device': { $in: arr } });
逻辑说明
- 两个查询条件写在同一个对象中默认是逻辑与关系,会同时生效
$in操作符会匹配properties.device数组中包含任意一个arr数组内元素的文档,完全符合"至少包含一个"的要求
内容的提问来源于stack exchange,提问作者krishna kumar rai
相关产品推荐
相关产品推荐

