javascript - 从 mongodb 获取最新记录并通过回调处理它

标签 javascript node.js mongodb

我不知道如何修改db.collection.find().limit(1).sort({$natural:-1}) 查询在控制台中工作,以便我可以在我的应用程序中使用它。目前我得到了 TypeError: Object #<Promise> has no method 'limit'错误,所以我猜我必须添加带有结果的回调并在那里处理它。

我在回调中发现的是这种语法,我看不出如何放置当前的 limit(1) 和 sort() 后缀 - 我认为它们不应该在回调之后:

collection.find({'_id':o_id}, function(err, cursor){
  cursor.toArray(callback);
  db.close();
});

我是在nodejs中做的,我的项目中也有monk可用。

用例:

获取最新的元素,将其值与我尝试插入的元素进行比较。如果数据库中的最新元素比我尝试插入的元素旧,则插入它。

最佳答案

它应该有效:

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

MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
  var collection = db.collection('MyCollection');
  var cursor     = collection.find().limit(1).sort({ $natural : -1 });

  cursor.toArray(function(err, results) {
    if (err) throw err;
    console.log('%j', results);
    db.close();
  });
});

但是,我猜您可能没有使用 mongodb 模块,但可能使用 Mongoose?

Monk 的工作方式与 mongodb 不同(它本身的建模更像 MongoDB shell)。

使用 Monk 执行类似的操作:

var db = require('monk')('localhost/test');

db.get('MyCollection').find({}, { sort : { $natural : -1 }, limit : 1 }).then(function(results) {
  console.log('%j', results);
  db.close();
}, function(err) {
  console.error(err);
  db.close();
});

关于javascript - 从 mongodb 获取最新记录并通过回调处理它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30707009/

相关文章:

javascript - 模块类型 Web Worker 中多个脚本的高效动态导入

javascript - 如何在meteor中设置多个smtp设置?

c# - 通过 .NET SDK 在 node.js 上的指纹读取器

javascript - 甚至不返回错误? Node.js 请求

ruby - 如何在不暴露密码的情况下使用 ruby​​ mongo 客户端创建 mongo 用户?

javascript - 如何使用ajax和mysql循环数据

javascript - AngularJS - ng-repeat,更新尚未定义的模型对象索引

javascript - 为什么我的 Async 和 Await 仍然没有完成序列执行的工作

mongodb - 插入到 mongo 数组的特定索引

mongodb - 我可以使用对象的属性在 mongo 更新中进行基本数学运算吗?