У меня есть скрипт mongoDB.
db = connect("localhost:27017/metaiot");
var numbers = db.trips.find({trips :{$elemMatch : {"tripON":false}}});
numbers.forEach(function(setter)
{ for(var index in setter.trips){
if(setter.trips[index]._id === ObjectId("562056e938396d1e248bbeee"))
print("Yes");
}
});
Теперь в моей БД у меня есть ObjectID.
ObjectId("56204f4a98114b0b23e7f833")
ObjectId("56204fbc8330653d23af74ef")
ObjectId("56205000190f575b238c8bb1")
ObjectId("562056e938396d1e248bbeee")
Вот вывод одного из операторов печати. Так что он существует. Но почему-то не работает оператор ===
. Почему?? Каков возможный обходной путь?
.equals()
идеально подходит для этого. В этом вопросе уже есть строка для сравнения, и.equals()
здесь будет неуклюжим. ОТВЕТ: В javascript===
является оператором идентификации для объектов: существующий объект никогда не может===
создать новый объект. Вместо этого используйте неявное преобразование строки для _id и оператор равенстваif(setter.trips[index]._id == "562056e938396d1e248bbeee")
- person Steve Tarver   schedule 24.10.2015