值不为空的猫鼬查询

希望执行以下查询:

Entrant
.find
enterDate : oneMonthAgo
confirmed : true
.where('pincode.length > 0')
.exec (err,entrants)->

我是否正确地执行了 where 子句? 我想选择 pincode不为空的文档。

169971 次浏览

您应该能够这样做(当您使用查询 api 时) :

Entrant.where("pincode").ne(null)

... 这将导致一个蒙戈查询类似于:

entrants.find({ pincode: { $ne: null } })

一些可能有帮助的链接:

我最后来到这里,我的问题是,我正在询问

{$not: {email: /@domain.com/}}

而不是

{email: {$not: /@domain.com/}}

$ne

选择字段值不等于 指定的值。这包括不包含 场地。

User.find({ "username": { "$ne": 'admin' } })

$nin

$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;
})
}

你们好,伙计们,我被困在这里了。我有一个 Document Profile,它有一个 User 引用,我试图列出用户 ref 不为 null 的概要文件(因为我已经在填充过程中通过 rol 过滤了) ,但是 在谷歌了几个小时之后,我不知道如何得到这个 有这样一个疑问:

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
}

先谢谢你。

好了,伙计们,我找到了解决这个问题的办法。我意识到在 Mongo 中不存在连接,这就是为什么首先你需要查询你喜欢的角色的用户 ID,然后再查询配置文档,像这样:

    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"}
})
});