Как мне найти объект по его ObjectId в консоли? - PullRequest
214 голосов
/ 23 ноября 2011

Я нашел ответ на этот вопрос для C # и Perl, но не в родном интерфейсе.Я думал, что это будет работать:

db.theColl.find( { _id: ObjectId("4ecbe7f9e8c1c9092c000027") } )

Запрос не дал результатов.Я нашел 4ecbe7f9e8c1c9092c000027, выполнив db.theColl.find() и захватив ObjectId.В этой коллекции несколько тысяч объектов.

Я прочитал все страницы, которые мог найти на сайте mongodb.org, и не нашел его.Это просто странная вещь?Это кажется мне вполне нормальным.

Ответы [ 10 ]

340 голосов
/ 23 ноября 2011

Не странно, люди делают это постоянно.Убедитесь, что имя коллекции правильное (регистр имеет значение) и точный ObjectId.

Документация здесь

> db.test.insert({x: 1})

> db.test.find()                                               // no criteria
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }      

> db.test.find({"_id" : ObjectId("4ecc05e55dd98a436ddcc47c")}) // explicit
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }

> db.test.find(ObjectId("4ecc05e55dd98a436ddcc47c"))           // shortcut
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }
73 голосов
/ 02 марта 2015

Еще проще, особенно с завершением табуляции:

db.test.find(ObjectId('4ecc05e55dd98a436ddcc47c'))

Редактировать: также работает с командой findOne для более красивого вывода.

71 голосов
/ 23 августа 2015

Если вы используете Node.js:

> var ObjectId = require('mongodb').ObjectId; 
> var id = req.params.gonderi_id;       
> var o_id = new ObjectId(id);
> db.test.find({_id:o_id})

Редактировать: исправлено новый идентификатор объекта (идентификатор), а не новый идентификатор объекта (идентификатор)

13 голосов
/ 17 августа 2015

Вы пропустили, чтобы вставить двойные кавычки.Точный запрос -

db.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )
3 голосов
/ 11 января 2017

После открытия CLI mongo, подключения и авторизации в нужной базе данных.

В следующем примере показано, как найти документ с _id = 568c28fffc4be30d44d0398e из коллекции.называемые «продукты»:

db.products.find({"_id": ObjectId("568c28fffc4be30d44d0398e")})
3 голосов
/ 08 сентября 2016

У меня просто была эта проблема, и я делал то, что было задокументировано, но она все еще не работала.

Посмотрите на ваше сообщение об ошибке и убедитесь, что у вас нет скопированных специальных символов. Я получаю сообщение об ошибке

SyntaxError: illegal character @(shell):1:43

Когда я перешел к персонажу 43, это было только начало идентификатора моего объекта, после открытых кавычек, именно так, как я его вставил. Я поместил свой курсор туда и нажал клавишу Backspace. цитаты. Я снова нажал на клавишу «Backspace», и она удалила открытую кавычку, затем вернула кавычку обратно и выполнила запрос, и он работал, несмотря на то, что выглядел точно так же.

Я занимался разработкой в ​​WebMatrix и скопировал идентификатор объекта из консоли. Всякий раз, когда вы копируете с консоли в WebMatrix, вы, вероятно, обнаружите некоторые невидимые символы, которые приведут к ошибкам.

1 голос
/ 17 октября 2018

В функциях MongoDB Stitch это можно сделать с помощью BSON , как показано ниже:

Для этой цели используйте помощник ObjectId в пакете утилит BSON, как в следующем примере:

var id = "5bb9e9f84186b222c8901149";  
BSON.ObjectId(id);
1 голос
/ 20 апреля 2017

Я думаю, вам лучше написать что-то вроде этого:

db.getCollection('Blog').find({"_id":ObjectId("58f6724e97990e9de4f17c23")})
0 голосов
/ 13 мая 2017

Чтобы использовать метод Objectid, вам не нужно его импортировать. Он уже находится на объекте mongodb.

var ObjectId = new db.ObjectId('58c85d1b7932a14c7a0a320d');
db.yourCollection.findOne({ _id: ObjectId }, function (err, info) {
   console.log(info)
});
               
0 голосов
/ 11 декабря 2015

Просто сделайте:

db.getCollection('test').find('4ecbe7f9e8c1c9092c000027');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...