node.js - 用mongodb中的对象数组检查字符串值数组
问题描述
我有这样的字符串数组
let fromHour = ['2.5','3','3.5']
let toHour = ['2.5','3','3.5']
我有一个保存在 mongoDB 中的对象数组
timeRange = [
{
from:'2.5',
to:'3'
},
{
from:'3',
to:'3.5'
}
]
我想检查该对象值中是否存在我的任何字符串值数组
我已经尝试过了,但它给了我这个错误(无法识别的表达式'$match')
checkAppoint = await Appointment.aggregate([
{
$project: {
date: myScheduleFinal[k].date,
status: { $in: ['pending', 'on-going'] },
timeRange: {
'$match': {
'from': { $in: fromHolder },
'to': { $in: toHolder },
},
},
},
},
]);
我也尝试过这个解决方案,它对我有用,但需要很长时间,所以我正在尝试使用聚合
checkAppoint = await Appointment.findOne({
date: myScheduleFinal[k].date,
status: { $in: ['pending', 'on-going'] },
timeRange:{$elemMatch:{
from:{$in:fromHolder},
to:{$in:toHolder}
}}
});
所以任何人都有解决方案
解决方案
只需尝试$elemMatch
和$in
运营商,
- 使用
find()
方法
checkAppoint = await Appointment.find({
timeRange: {
$elemMatch: {
from: { $in: fromHour },
to: { $in: toHour }
}
}
})
- 使用
aggregate()
方法
checkAppoint = await Appointment.aggregate([
{
$match: {
timeRange: {
$elemMatch: {
from: { $in: fromHour },
to: { $in: toHour }
}
}
}
}
])
推荐阅读
- javascript - 如何使用 writeFileSync 将 JSON 数据保存在文件中?
- php - 与 .php 文件相比,在 .env 文件中存储信息有什么优势?
- javascript - 在 ES6 React .JS 中使用 Async/Await
- java - 我如何获得多个由 ; 分隔的双输入 从一个 JtextField 并将它们存储在一个数组中?
- r - 如何将 FeatureCollection 中的 geojson 数据加载到 data.frame 中?
- java - Android Java - EditText,appendText 到 inputType Number
- java - Java 将输入追加到文件
- c# - c#文本到int64表示
- javascript - JavaScript 私有成员 - 没有第 3 阶段预设
- php - Access97 比较两个日期