javascript - 基于MongoDB中Object内部数组的过滤器
问题描述
嗨,我正在使用 mongoose 创建一个对象,该对象具有对象类型的字段。该对象还有两个字段 start_date 和 end_date。现在我得到一个查询,它应该过滤掉不与任何 start_date 到 end_date 期间一致的记录。即(query_end_date < start_date 或 query_start_date > end_date)
type : [{
userId : {
type : mongoose.Schema.ObjectId,
required : true
},
startDate : {
type : Date,
required : true
},
endDate : {
type : Date,
required : true
}
}]
解决方案
您可以使用$gt
and$lt
运算符和查询嵌套文档数组的语法进行查询:
async function Query(query_start_date, query_end_date){
try{
let users = await Model.find({ $or: [{ "field.startDate" : { $gt : query_end_date}} ,
{"field.endDate" : { $lt : query_start_date}} });
console.log(users);
} catch(err){
console.log("Error ", err);
}
推荐阅读
- java - 无法使用 bytebuddy 更改参数值
- python - 如何迭代熊猫数据框和随机数到现有行的每个元素
- excel - VBA:高级过滤器:如何按列表中的 NON FOUND 值过滤?
- google-chrome - Chrome 自动填充/搜索建议会泄露搜索信息
- solr - 在 solr 7.7 中使用特殊字符进行 Solr 排序
- c++ - 双向链表 C++。插入功能不起作用
- sql - 如何将列从 varchar 更改为几何
- java - 无法在控制器中调试@ExceptionHandler(ConstraintViolationException.class) - Spring boot
- python-3.x - 尝试更新数据框中的单元格时出现“IndexError:iloc 无法放大其目标对象”
- oauth - OAuth1 PALINTEXT:惊喜!只有 oauth_token 是强制性的吗?