我正在尝试查询MongoDB集合,以获取并匹配特定的日期范围和特定的ID数组,如branchIds或servicesIds。
如果查询找到结果,我希望返回该结果,以便通过特定用户验证请求在该集合中是否已经存在。
但是,每当我将数组值传递给查询的$or [{}]段时,使用$all时不会返回任何结果。
我做错了什么?
下面的代码可以工作并检索文档:
以下代码使用$all,这会使查询不返回任何文档:
如果查询找到结果,我希望返回该结果,以便通过特定用户验证请求在该集合中是否已经存在。
但是,每当我将数组值传递给查询的$or [{}]段时,使用$all时不会返回任何结果。
我做错了什么?
下面的代码可以工作并检索文档:
db.collection("requests")
.find({'filter.dateRange.from': {$eq: moment(from, "YYYY-MM-DD").startOf('day').format("YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},
'filter.dateRange.to': {$eq: moment(to, "YYYY-MM-DD").startOf('day').format("YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},
$or: [{'filter.branchesIds': {$eq: branchesIds }},{'filter.groupOfBranchesIds': { $eq: servicesIds }},{'filter.servicesIds': {$eq: groupOfBranchesIds }}]})
.toArray()
.then(result => {
if (result.length) {
resolve(result)
} else {
resolve(result)
}
}).catch(error => {
console.log(error);
})
以下代码使用$all,这会使查询不返回任何文档:
let _branchIds = branchesIds || [];
let _servicesIds = servicesIds || [];
let _groupOfBranchesIds = groupOfBranchesIds || [];
db.collection("requests")
.find({'filter.dateRange.from': {$eq: moment(from, "YYYY-MM-DD").startOf('day').format("YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},
'filter.dateRange.to': {$eq: moment(to, "YYYY-MM-DD").startOf('day').format("YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},
$or: [{'filter.branchesIds': {$all: _branchIds }},{'filter.groupOfBranchesIds': { $all: _servicesIds }},{'filter.servicesIds': {$all: _groupOfBranchesIds }}]})
.toArray()
.then(result => {
if (result.length) {
resolve(result)
} else {
resolve(result)
}
}).catch(error => {
console.log(error);
})