Как я могу выполнить этот запрос в Mongoose.js + MongoDB?Запросить вложенные объекты динамически в Mongodb + Mongoose.js
У меня простая схема, где оценки хранятся по идентификатору пользователя, чтобы избежать дублирования. Для чтения и записи данных объектов это прекрасно работает. Но как я могу запросить MongoDB для всех элементов, на которые его оценил конкретный зритель?
Например, это работает отлично в MongoDB оболочки:
db.items.find({ratings.52126672b9f5bd670b000001: {$exists: true}})
Но я хотел бы запросить это программно в Node.js + Mongoose.js как так,
var user_id = req.params.id;
Item.find({ ratings.user_id : {$exists: true}}, function(err, items) { ... });
Где я становлюсь тупым. Mongoose.js берет точку нотации для внутренних объектов, но это интерпретирует user_id
как литерал, а Mongoose.js не принимает квадратную скобку для внутренних объектов.
Вот пример схемы;
var ItemSchema = new mongoose.Schema({
name: { type: String, required: true },
ratings: { type: mongoose.Schema.Types.Mixed}
});
И пример таких данных:
[ {
name: "Toaster",
ratings: {
"52126672b9f5bd670b000001": 1,
"52155b39a411791c29000001": -1
}
},
{
name: "Griddle",
ratings: {
"52126672b9f5bd670b000001": 1,
"52126672b9f5bd670b000001": 1"
}
}
}