Mongodb periksa apakah ada koleksi nodejs

Untuk membuat koleksi di MongoDB, gunakan objek database dan tentukan nama koleksi yang ingin Anda buat

MongoDB akan membuat koleksi jika tidak ada

Contoh

Buat koleksi yang disebut "pelanggan"

impor pymongo

klienku = pymongo. MongoClient("mongodb. // localhost. 27017/")
mydb = klienku["databaseku"]

mycol = mydb["pelanggan"]

Jalankan contoh »

Penting. Di MongoDB, koleksi tidak dibuat hingga mendapatkan konten

MongoDB menunggu hingga Anda memasukkan dokumen sebelum benar-benar membuat koleksi


Periksa apakah Koleksi Ada

Ingat. Di MongoDB, koleksi tidak dibuat sampai mendapatkan konten, jadi jika ini adalah pertama kalinya Anda membuat koleksi, Anda harus menyelesaikan bab berikutnya (membuat dokumen) sebelum Anda memeriksa apakah koleksi tersebut ada.

Saya punya fungsi, mencoba mendapatkan nilai spesifik dari koleksi pengaturan di MongoDB. Penanda untuk objek pengaturan, yang berisi nilai pengaturan, dalam kumpulan pengaturan adalah {'pengaturan'. 'pengaturan'}. Skemanya adalah

collection:setting
|--object
   |--{'settings':'settings'}
   |--{'valueA':'valueA'}
   |--...

Masalahnya adalah ketika saya pertama kali menanyakan objek pengaturan, koleksi 'pengaturan' tidak ada. Jadi,

exports.getInstruments = function (callback) {
db.collection("settings", function(error, settings) {
    settings.find({ "settings" : "settings" }), (function(err, doc) {
           callback(doc.instruments);
    }); 
]);  
}
_

hanya hang dan panggilan balik tidak dipanggil. Jika koleksi tidak ada, saya harus mengembalikan "" atau tidak terdefinisi, kalau tidak – dok. instrumen

Solusi terbaik

Ada fungsi

exports.getInstruments = function (callback) {
db.collection("settings", function(error, settings) {
    settings.find({ "settings" : "settings" }), (function(err, doc) {
           callback(doc.instruments);
    }); 
]);  
}
_9 yang dapat Anda gunakan untuk menentukan apakah akan mengeksekusi kode yang hang atau tidak

> db.getCollection('hello').exists()
null
> db.getCollection('world').exists()
{ "name" : "testdb.world" }

Solusi Terkait

Mongodb – Cara menanyakan "bukan nol" di Mongo

Ini akan mengembalikan semua dokumen dengan kunci yang disebut "URL GAMBAR", tetapi mungkin masih memiliki nilai nol

db.mycollection.find({"IMAGE URL":{$exists:true}});
_

Ini akan mengembalikan semua dokumen dengan kunci yang disebut "URL GAMBAR" dan nilai bukan nol

db.mycollection.find({"IMAGE URL":{$ne:null}});

Juga, menurut dokumen, $exists saat ini tidak dapat menggunakan indeks, tetapi $ne bisa

Sunting. Menambahkan beberapa contoh karena minat pada jawaban ini

Mengingat sisipan ini

db.test.insert({"num":1, "check":"check value"});
db.test.insert({"num":2, "check":null});
db.test.insert({"num":3});
_

Ini akan mengembalikan ketiga dokumen

db.test.find();

Ini hanya akan mengembalikan dokumen pertama dan kedua

db.test.find({"check":{$exists:true}});
_

Ini hanya akan mengembalikan dokumen pertama

db.test.find({"check":{$ne:null}});
_

Ini hanya akan mengembalikan dokumen kedua dan ketiga

db.test.find({"check":null})

Node. js – Periksa secara sinkron apakah file/direktori ada di Node. js

Jawaban atas pertanyaan ini telah berubah selama bertahun-tahun. Jawaban saat ini ada di atas, diikuti oleh berbagai jawaban selama bertahun-tahun dalam urutan kronologis

Jawaban Saat Ini

Kamu bisa memakai

exports.getInstruments = function (callback) {
db.collection("settings", function(error, settings) {
    settings.find({ "settings" : "settings" }), (function(err, doc) {
           callback(doc.instruments);
    }); 
]);  
}
_0

Itu sudah usang selama beberapa tahun, tetapi tidak lagi. Dari dokumen

Perhatikan bahwa

> db.getCollection('hello').exists()
null
> db.getCollection('world').exists()
{ "name" : "testdb.world" }
_1 sudah usang, tetapi
> db.getCollection('hello').exists()
null
> db.getCollection('world').exists()
{ "name" : "testdb.world" }
0 tidak. (Parameter callback ke
> db.getCollection('hello').exists()
null
> db.getCollection('world').exists()
{ "name" : "testdb.world" }
_1 menerima parameter yang tidak konsisten dengan Node. panggilan balik js.
> db.getCollection('hello').exists()
null
> db.getCollection('world').exists()
{ "name" : "testdb.world" }
0 tidak menggunakan panggilan balik. )

Saya perlu memeriksa apakah ada koleksi di database tertentu dan membuatnya jika tidak. saya tahu itu

db.createCollection(collName, {strict:true}, function(error, collection))

memeriksa keberadaan koleksi collName sebelum membuatnya dan menyetel objek error. tapi saya perlu fungsi independen untuk memeriksanya

Di MongoDB 3. 0 dan yang lebih baru, Anda harus menjalankan perintah untuk mencantumkan semua koleksi dalam database

use test;
db.runCommand( { listCollections: 1 } );

Meskipun kueri system.namespaces akan tetap berfungsi saat Anda menggunakan mesin penyimpanan default (MMAPv1), ini tidak dijamin berfungsi untuk mesin lain, seperti WiredTiger

Bagaimana cara memeriksa apakah koleksi ada di MongoDB menggunakan node js?

Menggunakan Kelas DB . Jika database tidak ada, MongoDB akan secara otomatis membuatnya. Di sini, metode collectionExists akan mengembalikan true jika koleksi ada, false jika tidak .

Apa perintah untuk memeriksa keberadaan koleksi di MongoDB?

Dalam MongoDB, kita dapat memeriksa keberadaan bidang dalam koleksi tertentu menggunakan operator $exists .

Bagaimana cara memeriksa apakah database MongoDB ada?

Ada dua kemungkinan untuk memeriksa apakah database MongoDB ada. Kasus 1. Kemungkinan pertama adalah bahwa database MongoDB ada i. e. mengembalikan indeks tertentu . Kasus 2. Kemungkinan kedua adalah database MongoDB tidak ada i. e. itu mengembalikan indeks -1.

Bagaimana cara mendaftar semua koleksi di MongoDB?

Untuk mendapatkan daftar koleksi MongoDB, kita perlu menggunakan perintah Mongo shell show collections . Perintah ini akan mengembalikan semua koleksi yang dibuat dalam database MongoDB.