2014-08-22 3 views
0

У меня есть коллекция, которые имеют документ, как это:Реферирование недвижимости в MongoDB, принимая _id

collection 1 
{ 
    _id: ObjectID(), 
    name: foo 
} 

я получаю бы ObjectID вышеуказанного сбора и скопировать в документ другого сбора для того, чтобы правильно ссылаться. Должен ли я сделать просто:

db.collection1.find({name:"foo"},{_id:1}) 

EDIT enter image description here

+0

Я пытаюсь принять _id, вызвав команду var x = db.collection1.find ({name: "foo"}, {_ id: 1}); x._id, но я ничего не получаю – Mazzy

ответ

2

Вызов find возвратит cursor. Курсоры работают как итератор на других языках. Вы можете либо попытаться найти первый элемент курсора с помощью функции next(), а затем получить его _id свойства или упростить оператор с findOne:

var x = db.collection1.findOne({name:"foo"}, {_id:1}); 
var id = x._id; 

Это делает предположение, что вы получаете документ обратно от запрос. Вероятно, вы захотите добавить null на x, прежде чем захватить _id.

+0

Я получаю документ, но когда я вызываю x._id, значение пустое – Mazzy

+0

Как вы можете видеть на скриншоте, значение правильно сохраняется, но когда я вызываю ._id, я не получаю что-нибудь. это странно – Mazzy

+1

То же самое происходит, если вы используете 'findOne' вместо' find'? –

Смежные вопросы