Antworten:
Sie sollten in der Lage sein, dies wie folgt zu tun (da Sie die Abfrage-API verwenden):
Entrant.where("pincode").ne(null)
... was zu einer Mongo-Abfrage führt, die ähnelt:
entrants.find({ pincode: { $ne: null } })
Ein paar Links, die helfen könnten:
...("myArraySubDoc[0].someValue").ne(true)
?
where("myArraySubDoc.0.someValue").ne(true)
Ich bin hier gelandet und mein Problem war, dass ich nachgefragt habe
{$not: {email: /@domain.com/}}
anstatt
{email: {$not: /@domain.com/}}
Wählt die Dokumente aus, bei denen der Wert des Felds nicht dem angegebenen Wert entspricht. Dies schließt Dokumente ein, die das Feld nicht enthalten.
User.find({ "username": { "$ne": 'admin' } })
$ nin wählt die Dokumente aus, in denen: der Feldwert nicht im angegebenen Array enthalten ist oder das Feld nicht vorhanden ist.
User.find({ "groups": { "$nin": ['admin', 'user'] } })
Gesamtzahl der Dokumente, bei denen der Wert des Felds nicht dem angegebenen Wert entspricht.
async function getRegisterUser() {
return Login.count({"role": { $ne: 'Super Admin' }}, (err, totResUser) => {
if (err) {
return err;
}
return totResUser;
})
}
Ok Leute, ich habe eine mögliche Lösung für dieses Problem gefunden. Ich habe festgestellt, dass es in Mongo keine Verknüpfungen gibt. Deshalb müssen Sie zuerst die Benutzer-IDs mit der gewünschten Rolle abfragen und anschließend eine weitere Abfrage des Profildokuments durchführen.
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"}
})
});
Hallo Leute, ich bin damit festgefahren. Ich habe ein Dokumentprofil, das einen Verweis auf Benutzer enthält, und ich habe versucht, die Profile aufzulisten, bei denen Benutzerreferenz nicht null ist (da ich bereits während der Grundgesamtheit nach rol gefiltert habe), aber nach ein paar Stunden googeln kann ich es nicht herausfinden wie man das bekommt. Ich habe diese Frage:
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 }
Danke im Voraus.