Saya memiliki 2 jenis dokumen di mongodb saya

Pertama seperti ini dengan berbagai minat

{
    "_id" : ObjectId("5e7e4c3ad2b96e109e0d3842"),
    "email" : "user@hotmail.com",
    "interesse" : [ 
        "interest 1", 
        "interest 2", 
        "interest 3"
    ],
    "data" : 20170130,
    "name" : "testename",
    "gender" : "F"
}

Dan yang kedua seperti ini dengan sederet besar kepentingan yang dipisahkan oleh /

{
    "_id" : ObjectId("5e7e4cbbd2b96e109e6b748f"),
    "email" : "user2@gmail.com",
    "interesse" : "interest 3 / interest 4 / interest 5 / interest 6 / interest 7",
    "data" : 20190122,
    "name" : "user2",
    "gender" : "F"
}

Saya ingin memilih hanya data dengan string besar .. jadi saya bisa menerapkan fungsi "stringToArray" saya ..

Menggunakan .find({interesse:{$type:'array'}}) saya bisa mendapatkan semua tipe1
tetapi jika saya menggunakan

.find({interesse:{$type:'string'}}) i will get all  registers in my base.

Menggunakan

.find({interesse:{$type:{$not:'array'}}}) 

Saya mendapat

Error: error: {
    "ok" : 0,
    "errmsg" : "type must be represented as a number or a string",
    "code" : 14,
    "codeName" : "TypeMismatch"
}

Apa yang bisa saya lakukan untuk menyelesaikan ini?

1
fils capo 27 Maret 2020, 23:08

1 menjawab

Jawaban Terbaik

Mencoba

.find({interesse:{$not:{$type:'array'}}})
1
juanlews 27 Maret 2020, 20:19