Respuestas:
Debería poder hacer esto como (ya que está usando la API de consulta):
Entrant.where("pincode").ne(null)
... que resultará en una consulta mongo parecida a:
entrants.find({ pincode: { $ne: null } })
Algunos enlaces que pueden ayudar:
...("myArraySubDoc[0].someValue").ne(true)
?
where("myArraySubDoc.0.someValue").ne(true)
Terminé aquí y mi problema fue que estaba consultando
{$not: {email: /@domain.com/}}
en vez de
{email: {$not: /@domain.com/}}
selecciona los documentos donde el valor del campo no es igual al valor especificado. Esto incluye documentos que no contienen el campo.
User.find({ "username": { "$ne": 'admin' } })
$ nin selecciona los documentos donde: el valor del campo no está en la matriz especificada o el campo no existe.
User.find({ "groups": { "$nin": ['admin', 'user'] } })
recuento total los documentos donde el valor del campo no es igual al valor especificado.
async function getRegisterUser() {
return Login.count({"role": { $ne: 'Super Admin' }}, (err, totResUser) => {
if (err) {
return err;
}
return totResUser;
})
}
Ok chicos, encontré una posible solución a este problema. Me di cuenta de que las uniones no existen en Mongo, es por eso que primero debes consultar los identificadores del usuario con el rol que te gusta, y luego hacer otra consulta al documento de perfiles, algo como esto:
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"}
})
});
Hola chicos, estoy atrapado con esto. Tengo un perfil de documento que tiene una referencia al usuario, y he intentado enumerar los perfiles donde la referencia del usuario no es nula (porque ya filtré por rol durante la población), pero después de buscar en Google unas horas no puedo entender cómo conseguir esto. Tengo esta consulta:
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 }
Gracias por adelantado.