Query Mongoose dimana nilainya bukan null

100

Mencari untuk melakukan kueri berikut:

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

Apakah saya melakukan klausa where dengan benar? Saya ingin memilih dokumen pincodeyang tidak null.

wesbos.dll
sumber

Jawaban:

182

Anda harus dapat melakukan ini seperti (karena Anda menggunakan api kueri):

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

... yang akan menghasilkan kueri mongo yang menyerupai:

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

Beberapa tautan yang mungkin membantu:

nomor 1311407
sumber
2
apa yang ne berdiri?
wesbos
3
"tidak sama", menambahkan tautan ke jawaban
numbers1311407
dokumen mongodb tentangnya ada di sini (sekarang): docs.mongodb.org/manual/reference/operator/query Dokumen terkini tentangnya, ada di sini: mongoosejs.com/docs/api.html#query_Query-ne
zeropaper
Bagaimana mencapai dengan array, misalnya ...("myArraySubDoc[0].someValue").ne(true)?
Steve K
@SirBenBenji sesuatu sepertiwhere("myArraySubDoc.0.someValue").ne(true)
nomor1311407
9

Saya berakhir di sini dan masalah saya adalah yang saya tanyakan

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

dari pada

{email: {$not: /@domain.com/}}
MalcolmOcean
sumber
Sekadar catatan, inilah yang saya cari sendiri, terima kasih!
Cacoon
Saya berjuang untuk menemukan $ tidak di dokumen api! Terima kasih!
Jay Edwards
7

$ ne

memilih dokumen yang nilai bidangnya tidak sama dengan nilai yang ditentukan. Ini termasuk dokumen yang tidak berisi bidang.

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

$ nin

$ nin memilih dokumen di mana: nilai bidang tidak ada dalam larik yang ditentukan atau bidang tidak ada.

User.find({ "groups": { "$nin": ['admin', 'user'] } })
Tính Ngô Quang
sumber
0

jumlah total dokumen di mana nilai bidang tidak sama dengan nilai yang ditentukan.

async function getRegisterUser() {
    return Login.count({"role": { $ne: 'Super Admin' }}, (err, totResUser) => {
        if (err) {
            return err;
        }
        return totResUser;
    })
}
Vadivel Subramanian
sumber
0

Ok guys saya menemukan solusi yang mungkin untuk masalah ini. Saya menyadari bahwa gabungan tidak ada di Mongo, itulah mengapa pertama-tama Anda perlu menanyakan id pengguna dengan peran yang Anda suka, dan setelah itu lakukan kueri lain ke dokumen profil, seperti ini:

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

Halo teman-teman, saya terjebak dengan ini. Saya memiliki Profil Dokumen yang memiliki referensi ke Pengguna, dan saya telah mencoba membuat daftar profil di mana referensi pengguna tidak null (karena saya sudah memfilter berdasarkan rol selama populasi), tetapi setelah googleing beberapa jam saya tidak tahu bagaimana mendapatkan ini. Saya punya pertanyaan ini:

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": "[email protected]",
                "created_at": "2020-06-05T11:05:36.450Z"
            }
        }
    ],
    "page": 1
}

Terima kasih sebelumnya.

R0bertinski
sumber
Anda tidak boleh mengajukan pertanyaan Anda dalam bentuk jawaban
Yasin Okumuş