node.js - Node/Mongo 无法通过 ObjectId 找到

标签 node.js mongodb

我在这里看到过这个问题,但没有一个答案对我有用。

我的代码:

var BSON = require('mongodb').BSONPure;

// value is 544d644cf6eea12336f5e0a1
var object_id = BSON.ObjectID.createFromHexString(req.params.id); 
                    }
// Create GET _id query
collection.find(object_id).toArray(
  function (err, data) {
    if (!err) {
      // 200 OK
      return res.status(200).send({success: true, code: 200, count: data.length, results: data});
    } else {
       // 500 Internal Server (Mongodb) 
       console.log(err);
       return res.status(500).send({success: false, code: 500, error: "Internal Server Error"});
    }

我已经尝试了大约五种不同的方法来通过 ObjectId 进行查找,但都没有奏效。以上是我最近的尝试。我没有从 Node 返回任何结果。当我这样做时,在 mongo shell 中:

> db.people.find({_id : ObjectId("544d644cf6eea12336f5e0a1")});
{ "_id" : ObjectId("544d644cf6eea12336f5e0a1"), "name" : "Jim", "age" : 24, "job" : "engineer" }

如您所见,我得到了一个结果。我在这里缺少什么?

最佳答案

与在mongo shell 中一样,您需要为find() 编写一个查询对象。这是示例:

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

MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
  db.collection('people', function(err, collection) {
    collection.find({_id: new ObjectId('544d644cf6eea12336f5e0a1')}).toArray(function(err, docs) {
      console.log(docs);
      db.close();
    });
  });
});

您可能还想查看 find() 的相关文档和 ObjectID

关于node.js - Node/Mongo 无法通过 ObjectId 找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27075700/

相关文章:

java - 如何克服这个错误 "com.mongodb.diagnostics.logging.JULLogger log"

node.js - 如何找到我的 mongoDB 的远程 URL 以在我的 Node.js 代码中使用?

java - 在 openshift 中连接 mongodb 显示错误。

javascript - MERN 堆栈上的数据在哪里处理?

javascript - socket.io 服务器对象选项,两者之间有什么影响?

node.js, express.js - 提供单个静态文件的最简单方法是什么?

javascript - 如何修复 Three.js 加载超过 2 分钟并崩溃的问题

node.js - 错误 : GoogleMapsAPI is not defined for node-googlemaps

javascript - 上传图片到s3 bucket node js

java - 使用 Morphia 将额外/不需要的域类名称插入到 MongoDB 集合中?