在Mongodb + Mongoose.js中动态查询嵌套对象
Query nested object dynamically in Mongodb + Mongoose.js
如何在Mongoose.js + MongoDB中执行此查询?
我有一个简单的模式,其中评级按用户 ID 存储,以避免重复。 对于读取和写入给定对象,这工作正常。 但是,我如何查询MongoDB以获取特定查看器对其进行评级的所有项目?
例如,这在MongoDB shell中工作正常:
db.items.find({ratings.52126672b9f5bd670b000001: {$exists: true}})
但我想在 Node.js + 猫鼬中以编程方式查询.js就像这样,
var user_id = req.params.id;
Item.find({ ratings.user_id : {$exists: true}}, function(err, items) { ... });
我被难倒的地方是猫鼬.js它对内部对象采用点符号,但这user_id
解释为文字,而猫鼬.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"
}
}
}
var user_id = req.params.id;
var query = {};
query['ratings.' + user_id] = {$exists: true};
Item.find(query, function(err, items) { ... });
发送到 Item.find 的对象中的键必须是字符串。要构造任意值的字符串,您必须首先创建对象,然后使用括号表示法来定义它(即:query[anything+here] = data
)。
相关文章:
- 如何使用pouchdb创建动态查询(couchdb可能也是如此)
- 新手查询动态添加属性
- j查询动态表计算
- 如何根据查询字符串值创建动态超链接
- 我对这个动态查询做错了什么
- 动态添加数据时按数据属性查询JQuery选择器
- 具有动态查询的Webpack加载器
- 从Ember.js中的选择框动态更改当前ajax查找查询
- mongoDB动态查询中的日期筛选器
- 从 URL - AngularJS 获取动态查询字符串参数
- 角度 ui 路由器动态查询字符串定义
- 使用可动态查询样式化列表
- 推特的提前输入示例/动态查询
- 在Mongodb + Mongoose.js中动态查询嵌套对象
- 在MongoDB中动态查询字段
- 如何在 where 子句中使用动态查询字段
- 使用firebase进行动态查询
- 动态查询字符串php
- 如何从动态查询结果传递选定的sql行id到javascript
- 使用Mongoose进行动态查询