Mongoose Find()-如果查询未定义,则返回所有文档

lxkprmvk  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(125)

我有 Mongoose 查找代码功能,查询是从参数接收(这里目前硬编码)假设这是查询

var arrayOfCategories = [ '63073212ed3e0f85ccffc8cf' , '63073324ed3e0f85ccffc8ff']
var arrayOfSkill = []

字符串
这是我的查找代码

const astro =await Astrologer.find({ 'category.astolCat_id' : {$in: arrayOfCategories},
'skills.astolSkill_id': {  $in: arrayOfSkill}})


如果我在'arrayOfSkill'数组中有一个值,但我希望它忽略'' skills.astolSkill_id ':{ $in:arrayOfSkill}',并且只在arrayOfSkill为空时查询arrayOfCategories,则可以正常工作。如果arrayOfSkill为空,则返回空数组

9vw9lbht

9vw9lbht1#

逐步建立查询选项.

const query = {};
if (arrayOfCategories.length) {
  query["category.astolCat_id"] = { $in: arrayOfCategories };
}
if (arrayOfSkill.length) {
  query["skills.astolSkill_id"] = { $in: arrayOfSkill };
}

const astro =await Astrologer.find(query);

字符串

iibxawm4

iibxawm42#

const filter = [{}];

arrayOfCategories.length && filter.push({'category.astolCat_id': {$in: arrayOfCategories}})
arrayOfSkill.length && filter.push({'skills.astolSkill_id': { $in: arrayOfSkill }})

const astro =await Astrologer.find({$and:filter});

字符串
如果需要,可以修改为; find({$or: filter})

相关问题