Я нашел ответ на этот вопрос для С# и 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 }
Еще проще, особенно при завершении табуляции:
db.test.find(ObjectId('4ecc05e55dd98a436ddcc47c'))
Edit: также работает с командой findOne
для более красивого вывода.
Если вы используете 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)
import { ObjectId } from "mongodb";
работает для любителя JS.
Вы пропустили вставить Double Quotes. Точный запрос
db.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )
Как только вы открыли CLI mongo, подключились и авторизировались в правой базе данных.
В следующем примере показано, как найти документ с помощью _id = 568c28fffc4be30d44d0398e из коллекции под названием "продукты":
db.products.find({"_id": ObjectId("568c28fffc4be30d44d0398e")})
У меня была эта проблема, и я делал то, что было задокументировано, и она все еще не работает.
Посмотрите на свое сообщение об ошибке и убедитесь, что у вас нет специальных символов, которые были скопированы. Я получал ошибку
SyntaxError: illegal character @(shell):1:43
Когда я подошел к персонажу 43, это было только начало моего идентификатора объекта после открытых кавычек, точно так же, как я вложил его. Я поместил туда курсор и ударил назад, ничего не случилось, когда он должен был удалить открытую цитаты. Я снова ударил назад, и он удалил открытую цитату, затем я вернул цитату и выполнил запрос, и он работал, несмотря на то, что он выглядел точно таким же.
Я занимался разработкой в WebMatrix и копировал идентификатор объекта с консоли. Всякий раз, когда вы копируете с консоли в WebMatrix, вы, вероятно, заберете некоторые невидимые символы, которые вызовут ошибки.
Чтобы использовать метод Objectid, его не нужно импортировать. Он уже находится на объекте mongodb.
var ObjectId = new db.ObjectId('58c85d1b7932a14c7a0a320d');
db.yourCollection.findOne({ _id: ObjectId }, function (err, info) {
console.log(info)
});
TypeError: db.ObjectId is not a function
ObjectId("SOMETHING")
Думаю, вам лучше написать что-то вроде этого:
db.getCollection('Blog').find({"_id":ObjectId("58f6724e97990e9de4f17c23")})
Просто выполните:
db.getCollection('test').find('4ecbe7f9e8c1c9092c000027');
Mongo Shell
версии 3.2.7.