node.js mongodb通过_id node-mongodb-native选择文档

Mar*_*ark 83 javascript mongodb node.js

我正在尝试通过id选择一个文档

我试过了:

collection.update({ "_id": { "$oid": + theidID } }

collection.update({ "_id": theidID }

collection.update({ "_id.$oid": theidID }}
Run Code Online (Sandbox Code Playgroud)

还尝试过:

collection.update({ _id: new ObjectID(theidID ) }
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误500 ...

var mongo = require('mongodb')
var BSON = mongo.BSONPure;
var o_id = new BSON.ObjectID(theidID );

collection.update({ _id: o_id }
Run Code Online (Sandbox Code Playgroud)

这些都不起作用.如何通过_id选择?

Kin*_*Pin 129

var mongo = require('mongodb');
var o_id = new mongo.ObjectID(theidID);
collection.update({'_id': o_id});
Run Code Online (Sandbox Code Playgroud)

  • 现在 `ObjectID` 已被弃用,应该使用 `ObjectId` 来代替 (4认同)
  • 这有效.确保你在`require('mongodb')`上调用`ObjectID()`而不是`require('mongodb').MongoClient` (2认同)

nco*_*ges 69

这种方法对我有用.

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

var get_by_id = function(id, callback) {
  console.log("find by: "+ id);
  get_collection(function(collection) {
    collection.findOne({"_id": new ObjectId(id)}, function(err, doc) {
       callback(doc);
    });
  });
}
Run Code Online (Sandbox Code Playgroud)


nkt*_*ssh 18

现在你可以使用这个:

var ObjectID = require('mongodb').ObjectID;
var o_id = new ObjectID("yourObjectIdString");
....
collection.update({'_id': o_id});
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到文档


Rap*_*ert 12

native_parser:false:

var BSON = require('mongodb').BSONPure;
var o_id = BSON.ObjectID.createFromHexString(theidID);
Run Code Online (Sandbox Code Playgroud)

native_parser:true:

var BSON = require('mongodb').BSONNative;
var o_id = BSON.ObjectID.createFromHexString(theidID);
Run Code Online (Sandbox Code Playgroud)


Yar*_*rik 7

我只是在控制器文件中的Node.js应用中使用了此代码,它的工作原理是:

var ObjectId = require('mongodb').ObjectId;
...
User.findOne({_id:ObjectId("5abf2eaa1068113f1e")})
.exec(function(err,data){
   // do stuff
})
Run Code Online (Sandbox Code Playgroud)

不要忘记之前安装“ mongodb”,如果您使用带有“ presave”的bcrypt加密密码,请确保在数据库中对记录的每次修改之后都不会加密密码。


ant*_*ove 6

/* get id */
const id        = request.params.id; // string "5d88733be8e32529c8b21f11"

/* set object id */
const ObjectId  = require('mongodb').ObjectID;

/* filter */
collection.update({ 
    "_id": ObjectId(id)
} )
Run Code Online (Sandbox Code Playgroud)