Найти все документы, в которых вложенный документ не является нулевым
У меня есть две модели, я сокращаю их ради простоты. Я хочу получить все видео, где пользователь не является нулевым.
var Video = new mongoose.Schema({
user : {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
status : {type: String, default: 'Active'},
recycled : {type: Number, default: 0}
});
var User = new mongoose.Schema({
email : {type: String, unique: true, lowercase: true},
password: {type: String, select: false},
status : {type: String, default: 'Active'},
recycled : {type: Number, default: 0}
)};
Я делаю нумерацию страниц с сортировкой и прочим, поэтому я использовал структуру агрегации. У меня есть состояние объекта:
var condition = {
recycled: {$ne: 1},
status : 'Active'
}
И вот мой запрос выглядит примерно так:
var _pageNumber = req.body.pageNumber,
_pageSize = req.body.limit,
condition = {
recycled: {$ne: 1},
status : 'Active'
},
var populateQuery = [
{
"path": "user",
model : 'User',
match : {
recycled: {$ne: 1}
}
}
// some other models populated...
];
Video.aggregate(
[
{$match: condition},
{$sort: sort},
{$skip: (_pageNumber > 0 ? ((_pageNumber - 1) * _pageSize) : 0)},
{$limit: _pageSize}
],
function (err, results) {
if (err) return next(err);
Video.populate(results, populateQuery,
function (err, results) {
if (err) throw err;
return res.status(200).send({
message : 'listOk',
videos : results,
pageNumber: _pageNumber
});
)
});
Я ПЫТАЛСЯ СЛЕДУЮЩИМ
var condition = {
recycled: {$ne: 1},
status : 'Active',
'user' : {$ne: null} or something like 'videos.user' : {$ne: null}
}
Но я думаю, что видео не заполняется пользователями в тот период, когда выполняется условие и выше, не работает.
Я тоже пробовал
var populateQuery = [
{
"path": "user",
model : 'User',
match : {
recycled : {$ne: 1},
"videos.user": {$ne: null}
}
}
]
Спасибо