存在以下类型的数据库:{_id: "...", shelf:{type:String}, books:{type:Array({ name :{type:String}})}}
无论如何我都需要提取所有书架,即使它们没有我正在寻找的书,我的不成功查询如下所示:
let query = [
{$match:{shelf: shelf}},
{$unwind: "$books"},
{$match: {$or:[ {'books.name ': {$exists: false}}, // If empty
{'books.name ': name}, // If there is a necessary book
{'books.name ': {$nin:name}} // If there is no necessary
]}} ]
我想排除一个空答案的愿望使我走进了死胡同。有人尝试使用$not, $ne, $nin
。结果是一个[ ] or undefined
1条答案
按热度按时间jrcvhitl1#
我相信你正在尝试获取书架而不管书是否存在。你的查询有$unwind,它正在停止这个操作,你需要传递一个额外的参数(preserveNullAndEmptyArrays),如下所示