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.

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:


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/}}

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'] } })

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

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

-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": "myemail@gmail.com",
                "created_at": "2020-06-05T11:05:36.450Z"
            }
        }
    ],
    "page": 1
}

Terima kasih sebelumnya.


Anda tidak boleh mengajukan pertanyaan Anda dalam bentuk jawaban
Yasin Okumuş
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.