Как проверить наличие коллекции с помощью MongoJS и Node.js

Мне нужно проверить, существует ли коллекция в БД, используя Node.js и MongoDB. Здесь я использую mongoJS в качестве драйвера узла. Мой код ниже:

var mongoJs=require('mongojs');
var md5 = require('md5');
var dateTime = require('node-datetime');
var collections=['f_users'];
var MONGOLAB_URI="mongodb://user:*****123%[email protected]:27153/fgdp";
var db=mongoJs(MONGOLAB_URI,collections);
exports.userSignup=function(req,res){
    var email=req.body.email;
    var password=req.body.password;
    var dob=req.body.dob;
    var dt = dateTime.create();
    var createdDate=dt.format('Y-m-d H:M:S');
    var updateDate=dt.format('Y-m-d H:M:S');
    db.f_user_login
    db.f_user_login.insert()
}

Здесь мне нужно, существует ли коллекция f_user_login внутри БД или нет. Если он не существует, он вставит требуемый документ.


person satya    schedule 01.08.2017    source источник
comment
Как вы думаете, зачем вам нужно знать, существует ли коллекция? MongoDB вообще все равно. Кажется, если все, что вы действительно хотите знать, это вставлять ли документ или нет, тогда вам следует использовать upserts, чтобы решить, создавать «документ» или нет. Коллекция будет просто создаваться по мере написания документа или просто существовать.   -  person Neil Lunn    schedule 01.08.2017


Ответы (2)


Я полагаю, что вам сначала нужно добавить коллекцию в свою базу данных.

var db=mongoJs(MONGOLAB_URI,['f_user_login', 'f_users']);

И тогда вы можете попробовать запустить это

var fUserLoginExist = db.f_user_login.findOne();
if (fUserLoginExist) {
  // the collection exists
} else {
  // the collection does not exist
}

Надеюсь, поможет

person Riccardo Sibani    schedule 01.08.2017

Когда я хочу проверить наличие коллекции, я использую простой фрагмент кода ниже

  var nmColl = "MyCollection";
  if(db.getCollectionNames().find(function(el) {return el == nmColl;}) == null)
  {
     //do something
  }

Это хорошо для MongoDB до 3.0. Во-первых, есть функция db.getCollectionNames() для возврата всех существующих коллекций, когда я ищу указанное имя коллекции. Если нет нужной коллекции, например, я ее создам.

person Larissa Savchekoo    schedule 04.10.2018