node.js mongodb select document by _id node-mongodb-native

Lesezeit: 3 Minuten

Benutzer-Avatar
Markieren

Ich versuche, ein Dokument nach ID auszuwählen

Ich habe es versucht:

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

collection.update({ "_id": theidID }

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

Auch probiert:

collection.update({ _id: new ObjectID(theidID ) }

Das gibt mir einen Fehler 500 …

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

collection.update({ _id: o_id }

Keines davon funktioniert. Wie wählt man nach _id aus?

  • collection.find({"_id": ObjectId(theidID)}) sollte arbeiten.

    – Bernie Hackett

    4. Februar 2011 um 21:48 Uhr


  • @ Bugai13 Ich habe aufgegeben und am Ende jedem Dokument eine benutzerdefinierte ID zugewiesen.

    – Markieren

    27. Februar 2011 um 17:27 Uhr

  • Ich brauche dies für eine Auswahl/Suche (nicht einmal ein Update). Etwas Glück?

    – Nachzügler

    25. Mai 2011 um 12:49 Uhr

  • Es funktioniert nicht, wenn Sie keinen Verweis auf den richtigen Serializer haben.

    – MK_Dev

    1. Juni 2012 um 1:48 Uhr

  • @BernieHackett Diese Methode funktioniert nicht für die Knotenlaufzeit 12.13 mit Mongodb-Version 3.4. Es gibt den hier beschriebenen Fehler stackoverflow.com/questions/26453507/…

    – Kusal Hettiarachchi

    8. Dezember 2019 um 16:41 Uhr

Benutzer-Avatar
Königszapfen

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

  • Jahr 2016 – funktioniert immer noch ok. Wenn du kein Mädchen hattest native_parser:false – Überprüfen Sie die Antwort von Raphael unten

    – Fider

    9. Februar 2016 um 18:00 Uhr


  • Das funktioniert. Stellen Sie sicher, dass Sie anrufen ObjectID() an require('mongodb') und nicht an require('mongodb').MongoClient

    – Alec O

    20. Juli 2017 um 18:19 Uhr

  • Auf diese Weise bin ich gekommen mongoClient.ObjectID is not a constructor Error.

    – Sachin Schah

    26. September 2018 um 11:36 Uhr

  • Jetzt ObjectID veraltet ist, sollte man verwenden ObjectId stattdessen

    – Jakow L

    28. November 2021 um 14:51 Uhr

Dies ist der Ansatz, der für mich funktioniert hat.

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);
    });
  });
}

Jetzt können Sie einfach dies verwenden:

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

Sie können die Dokumentation einsehen hier

  • Ist es möglich, den ES6-Stil zu verwenden? import Aussage statt require('mongodb').ObjectID?

    – Benutzer1063287

    28. November 2021 um 7:18 Uhr

Mit native_parser:false:

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

Mit native_parser:true:

var BSON = require('mongodb').BSONNative;
var o_id = BSON.ObjectID.createFromHexString(theidID);

Ich habe diesen Code gerade in der Node.js-App in der Controller-Datei verwendet, und es funktioniert:

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

Vergessen Sie nicht, “mongodb” vorher zu installieren, und wenn Sie die Verschlüsselung Ihrer Passwörter mit bcrypt mit “presave” verwenden, stellen Sie sicher, dass Sie das Passwort nicht nach jeder Änderung des Datensatzes in DB verschlüsseln.

Benutzer-Avatar
Vorliebe

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

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

/* filter */
collection.update({ 
    "_id": ObjectId(id)
} )

Benutzer-Avatar
Roger Pérez

Das hat bei mir funktioniert. Verwenden von mongoDB

const mongoDB = require('mongodb')

Dann unten, wo ich meinen Expressruf tätige.

router.get('/users/:id', (req, res) => {
const id = req.params.id;
var o_id = new mongoDB.ObjectID(id);

const usersCollection = database.collection('users');

usersCollection.findOne({
  _id: o_id
})

.then(userFound => {
  if (!userFound){
    return res.status(404).end();
  }
  // console.log(json(userFound));
  return res.status(200).json(userFound)
})
.catch(err => console.log(err));

 });`

1216680cookie-checknode.js mongodb select document by _id node-mongodb-native

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy