Câu trả lời:
Bạn sẽ có thể làm điều này như (khi bạn đang sử dụng api truy vấn):
Entrant.where("pincode").ne(null)
... sẽ dẫn đến một truy vấn mongo giống như sau:
entrants.find({ pincode: { $ne: null } })
Một số liên kết có thể giúp:
...("myArraySubDoc[0].someValue").ne(true)
?
where("myArraySubDoc.0.someValue").ne(true)
Tôi đã kết thúc ở đây và vấn đề của tôi là tôi đang truy vấn
{$not: {email: /@domain.com/}}
thay vì
{email: {$not: /@domain.com/}}
chọn các tài liệu mà giá trị của trường không bằng giá trị được chỉ định. Điều này bao gồm các tài liệu không chứa trường.
User.find({ "username": { "$ne": 'admin' } })
$ nin chọn các tài liệu trong đó: giá trị trường không nằm trong mảng được chỉ định hoặc trường không tồn tại.
User.find({ "groups": { "$nin": ['admin', 'user'] } })
tổng đếm các tài liệu mà giá trị của trường không bằng giá trị đã chỉ định.
async function getRegisterUser() {
return Login.count({"role": { $ne: 'Super Admin' }}, (err, totResUser) => {
if (err) {
return err;
}
return totResUser;
})
}
Ok các bạn, tôi đã tìm thấy một giải pháp khả thi cho vấn đề này. Tôi nhận ra rằng các phép nối không tồn tại trong Mongo, đó là lý do tại sao trước tiên bạn cần truy vấn id của người dùng với vai trò bạn thích và sau đó thực hiện một truy vấn khác đến tài liệu hồ sơ, giống như sau:
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"}
})
});
Xin chào các bạn, tôi đang bị mắc kẹt với điều này. Tôi có một Hồ sơ tài liệu có tham chiếu đến Người dùng và tôi đã cố gắng liệt kê các hồ sơ mà số tham chiếu của người dùng không bị rỗng (vì tôi đã lọc theo rol trong tổng thể), nhưng sau khi google vài giờ, tôi không thể tìm ra làm sao để có được điều này. Tôi có truy vấn này:
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 }
Cảm ơn trước.