Відповіді:
Ви повинні мати змогу зробити це так (під час використання запиту api):
Entrant.where("pincode").ne(null)
... що призведе до запиту mongo, що нагадує:
entrants.find({ pincode: { $ne: null } })
Кілька посилань, які можуть допомогти:
...("myArraySubDoc[0].someValue").ne(true)
?
where("myArraySubDoc.0.someValue").ne(true)
Я опинився тут, і моя проблема полягала в тому, що я запитував
{$not: {email: /@domain.com/}}
замість
{email: {$not: /@domain.com/}}
вибирає документи, де значення поля не дорівнює заданому значенню. Сюди входять документи, які не містять поля.
User.find({ "username": { "$ne": 'admin' } })
$ nin вибирає документи, де: значення поля відсутнє у вказаному масиві або поле не існує.
User.find({ "groups": { "$nin": ['admin', 'user'] } })
загальний підрахунок документів, коли значення поля не дорівнює заданому значенню.
async function getRegisterUser() {
return Login.count({"role": { $ne: 'Super Admin' }}, (err, totResUser) => {
if (err) {
return err;
}
return totResUser;
})
}
Добре, хлопці, я знайшов можливе рішення цієї проблеми. Я зрозумів, що об’єднань у Монго не існує, тому спочатку вам потрібно запитати ідентифікатори користувача з роллю, яка вам подобається, а після цього зробити ще один запит до документа про профілі, приблизно так:
const exclude: string = '-_id -created_at -gallery -wallet -MaxRequestersPerBooking -active -__v';
// Get the _ids of users with the role equal to role.
await User.find({role: role}, {_id: 1, role: 1, name: 1}, function(err, docs) {
// Map the docs into an array of just the _ids
var ids = docs.map(function(doc) { return doc._id; });
// Get the profiles whose users are in that set.
Profile.find({user: {$in: ids}}, function(err, profiles) {
// docs contains your answer
res.json({
code: 200,
profiles: profiles,
page: page
})
})
.select(exclude)
.populate({
path: 'user',
select: '-password -verified -_id -__v'
// group: { role: "$role"}
})
});
Привіт, хлопці, я застряг у цьому. У мене є профіль документа, в якому є посилання на користувача, і я намагався перерахувати профілі, де посилання користувача не є нульовим (оскільки я вже відфільтрував за допомогою ролу під час популяції), але після гуглиння кількох годин я не можу зрозуміти, як це отримати. У мене є такий запит:
const profiles = await Profile.find({ user: {$exists: true, $ne: null }}) .select("-gallery") .sort( {_id: -1} ) .skip( skip ) .limit(10) .select(exclude) .populate({ path: 'user', match: { role: {$eq: customer}}, select: '-password -verified -_id -__v' }) .exec(); And I get this result, how can I remove from the results the user:null colletions? . I meant, I dont want to get the profile when user is null (the role does not match). { "code": 200, "profiles": [ { "description": null, "province": "West Midlands", "country": "UK", "postal_code": "83000", "user": null }, { "description": null, "province": "Madrid", "country": "Spain", "postal_code": "43000", "user": { "role": "customer", "name": "pedrita", "email": "myemail@gmail.com", "created_at": "2020-06-05T11:05:36.450Z" } } ], "page": 1 }
Заздалегідь спасибі.