我需要获取所有与数组内容完全匹配且与任何元素都匹配的文档。为此,我逐步进行了搜索,然后将结果合并在一起,例如:
const objectIds = array.map(id => (
{
mongoArray: {
$elemMatch: {
ids: new ObjectId(id)
}
}
}
))
let results = await Collection.find({
$or: objectIds
}).lean()
const matchAnd = await Collection.find({
$and: objectIds
}).lean()
results.push(matchAnd)
该方法的问题是1)结果将重复,并且2)我正在对数据库进行两次查询。
我的问题是:有没有办法在同一个查询中同时删除两个重复项,并把$和(如果有的话)匹配项放在最后?