我陷入了这种情况。因此person具有以下属性firstname,lastname,books [{date,name}]
其中books数组的日期为字符串日期。
i搜索那些在日期字段中有年份的书籍的人。我不确定要在代码中进行哪些调整才能使其正常工作。这本书的日期存储为字符串日期。
let name = '2019';
let or = [
{ 'firstname': { '$regex': name, '$options': 'i' } },
{ 'lastname': { '$regex': name, '$options': 'i' } },
];
if (!isNaN(name)) {
let date = new Date(name);
or.push({ 'books.date': { "$gt": date, "$lt": date } });
}
Person.aggregate().match(
{
'$or': or
}
).project({
_id: 0,
id: '$_id',
firstname: 1,
lastname: 1,
}).sort({ lastname: 1, firstname: 1 }).exec(function(err, persons) {
// do code.
});
有想法吗?