2017-08-11 45 views
1

我想從我的mongoDb數據庫基於_id刪除一些東西。在我的控制檯中,我不斷收到行正在刪除的消息,但是當我檢查數據庫時,該對象仍然存在。MongoDB對象不會從數據庫中刪除

這是我的函數:

 function deleteById(){ 
//5989df87e027c737e5500d17 
url_database= mongodb://localhost:27017/incept 

MongoClient.connect(url_database, function(err, db) { 
    if (err) throw err; 
    var myquery = { _id: '5989df87e027c737e5500d17' }; 
    db.collection("medicament").removeOne(myquery, function(err, obj) { 
     if (err){ 
      console.log("failed"); 
      throw err; 
     } 
      console.log("1 document deleted"); 
     db.close(); 
    }); 
}); 
} 

這是我的JSON對象

{ _id: 5989df87e027c737e5500d17, 
     medicine_name: 'ada', 
     dosage_value: 'ads', 
     dosage_unit: 'MG', 
     prescribed_for_days: 'ads', 
     doctor_name: 'asda', 
     morning_select: '06:00', 
     afternoon_select: '06:00', 
     evening_select: '06:00', 
     night_selct: '06:00' } 

回答

0

您需要將字符串_id值轉換爲ObjectID因爲這是它是如何存儲在集合中:

const mongodb = require('mongodb'); 

var myquery = { _id: mongodb.ObjectID('5989df87e027c737e5500d17') }; 
1

你確定方法removeOne。我想刪除你必須使用deleteOne。

deleteOne

+0

或者只是使用「刪除」 – Eric

+0

看來,'removeOne'是驅動程序中的'deleteOne'的別名可以工作。 – JohnnyHK

+0

在NodeJS中,removeOne是[UnorderedBulkOperation](https://mongodb.github.io/node-mongodb-native/api-generated/unordered.html#removeone)的一部分。如果你想從集合中刪除數據,你可以使用'deleteMany','deleteOne'或'db.collectionName.remove'。 [removeone](http://mongodb.github.io/node-mongodb-native/2.2/api/FindOperatorsUnordered.html#removeOne) 'removeOne'可用於批量操作的情況。 –

相關問題