Mongodb:如何从数据库中获取第一个文档,然后将其删除

时间:2019-09-22 17:45:19

标签: javascript node.js mongodb

我正在开发应用程序,并且是第一次使用MongoDB。

我在使用上遇到了一些问题,因为文档似乎已经过时,甚至此处的答案似乎与以前的版本有关,所以不推荐使用某些功能。

我想要获取然后删除数据库的第一个文档。

我尝试了以下代码:

const mongodb = require('mongodb');
const MongoClient = mongodb.MongoClient;
const url = <my mongodb url>;

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, function (err, client) {
    if (err) {
        console.error('Unable to connect to the mongoDB server. Error:', err);
    } else {
        const db = client.db('myFirstDb').collection('myList');

        db.find().toArray((err, items) => {
            console.log(items.length)
        });

        db.updateOne({}, {$pop: {myList: -1}}, function (err, result) {
            console.log('Done');
        });

        client.close();
    }
});

但是什么也没发生。 docs举例说明:

db.students.update( { _id: 1 }, { $pop: { scores: 1 } } )

但是它删除数据库中一个文档的数组的元素;就我而言,我需要弹出数据库的第一个条目。无论如何,正如我所说,文档未更新,因为它使用了已弃用的update函数。

您知道是否可以做我需要的事情?

1 个答案:

答案 0 :(得分:1)

以下代码可以解决问题:

// Getting the first document
var firstDoc = db.collection.findOne();

// Deleting the first document
db.collection.remove(firstDoc["_id"]);

删除之前:

{ "_id" : ObjectId("5d88201138db7cf8d3f75cd1"), "value" : 1 }
{ "_id" : ObjectId("5d88201138db7cf8d3f75cd2"), "value" : 2 }
{ "_id" : ObjectId("5d88201138db7cf8d3f75cd3"), "value" : 3 }
{ "_id" : ObjectId("5d88201138db7cf8d3f75cd4"), "value" : 4 }
{ "_id" : ObjectId("5d88201138db7cf8d3f75cd5"), "value" : 5 }

删除后:

{ "_id" : ObjectId("5d88201138db7cf8d3f75cd2"), "value" : 2 }
{ "_id" : ObjectId("5d88201138db7cf8d3f75cd3"), "value" : 3 }
{ "_id" : ObjectId("5d88201138db7cf8d3f75cd4"), "value" : 4 }
{ "_id" : ObjectId("5d88201138db7cf8d3f75cd5"), "value" : 5 }