21

为什么我不能通过 _id 删除记录?

代码:

db.collection('posts', function(err, collection) {
   collection.remove({_id: '4d512b45cc9374271b00000f'});
});
4

6 回答 6

62

您需要将_id值作为 ObjectID 传递,而不是字符串:

var mongodb = require('mongodb');

db.collection('posts', function(err, collection) {
   collection.deleteOne({_id: new mongodb.ObjectID('4d512b45cc9374271b00000f')});
});
于 2012-10-15T18:39:02.053 回答
6

MongoDb 现在已将 remove 方法标记为已弃用。它已被两个单独的方法取代:deleteOne 和 deleteMany。

这是他们相关的入门指南:https ://docs.mongodb.org/getting-started/node/remove/

这是一个快速示例:

var mongodb = require('mongodb');

db.collection('posts', function(err, collection) {
   collection.deleteOne({_id: new mongodb.ObjectID('4d512b45cc9374271b00000f')}, function(err, results) {
       if (err){
         console.log("failed");
         throw err;
       }
       console.log("success");
    });
});
于 2016-03-14T07:31:19.073 回答
1

使用 TypeScript,您可以使用导入来实现它,而不需要整个库

import { ObjectID } from 'mongodb'   

 

db.collection('posts', function(err, collection) {
   collection.deleteOne({_id: new ObjectID('4d512b45cc9374271b00000f')});
});
于 2020-12-19T06:21:25.950 回答
0

我认为我们必须要求 mongodb 作为 const 并将其与 mongodb 一起使用

于 2021-09-07T10:43:43.397 回答
0

首先包括mongodb

var mongodb = require("mongodb");

您必须包含来自 mongodb 的 ObjectID

var ObjectID = require('mongodb').ObjectID;

然后使用

var delete_id = request.params.id;//your id

 collection.deleteOne({_id: new mongodb.ObjectID(delete_id.toString())});

1000% 有效...

于 2020-12-09T16:45:58.193 回答
0

我最近偶然发现了这个问题,我发现解决方法是:

const mongodb = require('mongodb');
const ObjectID = require('mongodb').ObjectID;
databaseName.collectionName.deleteOne({_id: new mongodb.ObjectID(id)} , (err)=>{
   if (err) throw err;
   console.log('Deleted'+id);
});
于 2022-02-03T15:41:03.517 回答