我正在开发应用程序,并且是第一次使用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
函数。
您知道是否可以做我需要的事情?
答案 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 }