2016-08-14 3 views
0

Мне нужно вставить документ в коллекцию MongoDB. и имеют идентификатор вновь созданного документа. Метод insertOne() (https://docs.mongodb.com/manual/tutorial/insert-documents/#db-collection-insertone) был бы идеален для этого - однако моя текущая версия Mongo ограничена методом insert() (документация на той же странице, что и выше). Этот метод не возвращает object_id вставленного документа (ов) - то же самое относится к методу save().Возврат идентификатора из недавно вставленного документа - mongoDB

collection.insert():

> db.urls.insert({"url":"https://www.google.com"}) 
WriteResult({ "nInserted" : 1 }) 

collection.save():

> db.urls.save({"url":"https://www.google.com"}) 
WriteResult({ "nInserted" : 1 }) 

Есть ли более подходящий способ для меня, чтобы использовать здесь?

Я вижу возможный ответ в этом сообщении: MongoDB - Return id of inserted item, однако я не уверен, что метод save(), который они используют, является тем же, на который я смотрю, поскольку он, похоже, действует в базе данных объект против коллекции. Я пытался следовать примеру в верхнем ответе с вхождением этого кода:

db.urls.save(function(err,result) 
    { response = {id:result._id} 
    res.json(response) 
}) 

Получен общая синтаксической ошибка после ввода этого в Монго оболочку.

Спасибо за ваши ответы!

ответ

0

Итак, я понял, что мой вопрос больше о Node.js драйвера для MongoDB, а не MongoDB - из моего опыта работы с SQL - мой вопрос не был бы столь же уместным, если бы я спрашивал, как получить ID недавно вставленной записи в SQL Server - эта задача больше зависит от драйвера. Глядя на документации для водителя Node.js, представленного в возможном дубликате поста - это есть именно ответ я ищу:

http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#insert

Уходя эту документацию, следующий код дает мне то, что я требуется:

db.urls.insert({"url":"https://www.google.com"}, function(err, docs) { 
    console.log(docs); 
}) 
Смежные вопросы