Использовать свойство _id из mongodb Node-Js driver [duplicate]

Выполнение этого без Linq, как вы сказали:

public class Order : IComparable
{
    public DateTime OrderDate { get; set; }
    public int OrderId { get; set; }

    public int CompareTo(object obj)
    {
        Order orderToCompare = obj as Order;
        if (orderToCompare.OrderDate < OrderDate || orderToCompare.OrderId < OrderId)
        {
            return 1;
        }
        if (orderToCompare.OrderDate > OrderDate || orderToCompare.OrderId > OrderId)
        {
            return -1;
        }

        // The orders are equivalent.
        return 0;
    }
}

Затем просто позвоните .sort () в свой список Orders

66
задан Mark 4 February 2011 в 22:08
поделиться

6 ответов

var mongo = require('mongodb');
var o_id = new mongo.ObjectID(theidID);
collection.update({'_id': o_id});
95
ответ дан KingPin 19 August 2018 в 08:52
поделиться
  • 1
    Год 2016 - все еще работает нормально. Если нет, возможно, у вас есть native_parser:false - проверьте ответ Рафаэля ниже – fider 9 February 2016 в 19:00
  • 2
    Это работает. Убедитесь, что вы вызываете ObjectID() на require('mongodb'), а не на require('mongodb').MongoClient – Alec O 20 July 2017 в 18:19
  • 3
    – Sachin Shah 26 September 2018 в 11:36

Ответ зависит от типа переменной, которую вы передаете как идентификатор. Я вытащил идентификатор объекта, выполнив запрос и сохранив свой account_id как атрибут ._id. Используя этот метод, вы просто запрашиваете использование идентификатора mongo.

// begin account-manager.js
var MongoDB   = require('mongodb').Db;
var dbPort      = 27017;
var dbHost      = '127.0.0.1';
var dbName      = 'sample_db';
db = new MongoDB(dbName, new Server(dbHost, dbPort, {auto_reconnect: true}), {w: 1});
var accounts = db.collection('accounts');

exports.getAccountById = function(id, callback)
{ 
  accounts.findOne({_id: id},
    function(e, res) {  
    if (e) {
        callback(e)
    }
    else {
        callback(null, res)
    }

  });
}
// end account-manager.js

// my test file
var AM = require('../app/server/modules/account-manager');

it("should find an account by id", function(done) {

AM.getAllRecords(function(error, allRecords){
  console.log(error,'error')
  if(error === null) {
    console.log(allRecords[0]._id)
    // console.log('error is null',"record one id", allRecords[0]._id)
    AM.getAccountById(          
      allRecords[0]._id,
      function(e,response){
        console.log(response,"response")
        if(response) {
          console.log("testing " + allRecords[0].name + " is equal to " + response.name)
          expect(response.name).toEqual(allRecords[0].name);
          done();    
        } 
      }
    )  
  } 
})

});

0
ответ дан jmontross 19 August 2018 в 08:52
поделиться

Этот подход работал для меня.

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);
    });
  });
}
61
ответ дан ncoronges 19 August 2018 в 08:52
поделиться

теперь вы можете просто использовать это:

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

Здесь вы можете увидеть документацию здесь

14
ответ дан nktssh 19 August 2018 в 08:52
поделиться

С native_parser:false:

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

С native_parser:true:

var BSON = require('mongodb').BSONNative;
var o_id = BSON.ObjectID.createFromHexString(theidID);
11
ответ дан Raphael Schweikert 19 August 2018 в 08:52
поделиться

Я просто использовал этот код в приложении Node.js в файле контроллера, и он работает:

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

не забудьте установить «mongodb» раньше, и если вы используете шифрование своих паролей с bcrypt с «presave», убедитесь, что вы не будете шифровать пароль после каждой модификации записи в БД.

2
ответ дан Yarik 19 August 2018 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: