2012-07-12 10 views

Odpowiedz

51

Tak, mimo że robisz to przez macierzysty sterownik MongoDB, a nie sam Mongoose. Zakładając, że wymagana, połączona, zmienna mongoose, natywny obiekt Db jest dostępny przez mongoose.connection.db, a ten obiekt zapewnia metody dropCollection i .

// Drop the 'foo' collection from the current database 
mongoose.connection.db.dropCollection('foo', function(err, result) {...}); 

// Drop the current database 
mongoose.connection.db.dropDatabase(function(err, result) {...}); 
+0

Dziękuję bardzo! – WHITECOLOR

+0

Zwróć uwagę, że te metody zwracają również obietnice, więc możesz robić rzeczy takie jak 'czekaj mongoose.connection.db.dropCollection ('foo');' zamiast walczyć z callbackami –

1

Mongoose odnosi się do połączenia w każdym modelu. Może się więc okazać, że warto również usunąć db lub kolekcję z pojedynczego modelu.

Na przykład:

// Drop the 'foo' collection from the current database 
User.db.db.dropCollection('foo', function(err, result) {...}); 

// Drop the current database 
User.db.db.dropDatabase(function(err, result) {...}); 
1

W Mongoose 4.9.8, można użyć poniższy usunąć kolekcję związaną z modelem.

ModelName.remove({}, function(err, row) { 
    if (err) { 
     console.log("Collection couldn't be removed" + err); 
     return; 
    } 

    console.log("collection removed"); 
}) 
+0

To nie usuwa kolekcji. Usuwa wszystkie rekordy w kolekcji. W przypadku dużej liczby rekordów może to zająć znaczną ilość czasu, powodując przekroczenie limitu czasu ... – user3616725