Как мне найти объект по его ObjectId в консоли Монго?

Вопрос:Я нашел ответ на этот вопрос для С# и Perl, но не в собственном интерфейсе. Я думал, что это сработает: db.theColl.find( { _id: ObjectId("4ecbe7f9e8c1c9092c000027") } ) Запрос не дал никаких результатов. Я нашел 4ecbe7f9e8c1c9092c000027, выполнив db.theColl.find() и захватив ObjectId. В этой коллекции есть несколько тысяч объектов. Я прочитал все страницы, которые я смог найти на

Вопрос:

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

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

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

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

Лучший ответ:

Не странно, люди делают это все время. Убедитесь, что имя коллекции правильно (имеет значение) и что 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 } Ответ №1

Если вы используете 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})

Изменить: исправлено для нового объекта ObjectId (id), а не нового ObjectID (id)

Ответ №2

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

db.test.find(ObjectId(‘4ecc05e55dd98a436ddcc47c’))

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

Ответ №3

Вы пропустили вставить Double Quotes.
Точный запрос

db.theColl.find( { «_id»: ObjectId(«4ecbe7f9e8c1c9092c000027») } ) Ответ №4

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

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

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

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

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

Ответ №5

Как только вы открыли CLI mongo, подключились и авторизировались в правой базе данных.

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

db.products.find({«_id»: ObjectId(«568c28fffc4be30d44d0398e»)}) Ответ №6

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

db.getCollection(‘Blog’).find({«_id»:ObjectId(«58f6724e97990e9de4f17c23»)}) Ответ №7

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

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

var id = «5bb9e9f84186b222c8901149»; BSON.ObjectId(id); Ответ №8

Если вы работаете над оболочкой Монго, просим вас сослаться на это: Ответ тайлера Брока

Я написал ответ, если вы используете mongodb с помощью node.js

Вам не нужно конвертировать идентификатор в ObjectId. Просто используйте:

db.collection.findById(‘4ecbe7f9e8c1c9092c000027’);

этот метод сбора автоматически преобразует идентификатор в ObjectId.

С другой стороны:

db.collection.findOne({«_id»:’4ecbe7f9e8c1c9092c000027′}) не работает должным образом. Вы вручную конвертировали идентификатор в ObjectId.

Это можно сделать так:

let id = ’58c85d1b7932a14c7a0a320d’; let o_id = new ObjectId(id); // id as a string is passed db.collection.findOne({«_id»:o_id}); Ответ №9

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

var ObjectId = new db.ObjectId(’58c85d1b7932a14c7a0a320d’); db.yourCollection.findOne({ _id: ObjectId }, function (err, info) { console.log(info) }); Ответ №10

Просто выполните:

db.getCollection(‘test’).find(‘4ecbe7f9e8c1c9092c000027’);

Оцените статью
Добавить комментарий