在MongoDB中动态查询字段
Query fields dynamically in MongoDB
假设模式是:
var Rows = mongoose.model('Rows', {
row1: String,
row2: String
});
如何随机查询其中一行?例如:
var rand = Math.floor(Math.rand() * 2);
Rows.find({ "row" + rand: "sup" }, function (err, result) {
if (err) {
console.log(err);
}
console.log(result);
});
此代码是一个错误SyntaxError: Unexpected token +
像一样尝试
var rand = Math.floor(Math.rand() * 2);
var objFind = {};
objFind["row" + rand] = "sup";
Rows.find(objFind, function (err, result) {
if (err) {
console.log(err);
}
console.log(result);
});
这不会给您带来预期的结果
Math.floor(Math.random() * 2)
要在JavaScript中获得随机数范围,您可能应该执行以下操作:
var randomWithRange = function (min, max) {
return Math.random() * (max - min) + min;
};
要在您的代码中使用此
var conditions = {};
conditions["row" + randomWithRange(1, 2)] = "sup";
Rows.find(conditions, function(err, result){ ... });
您不能通过使用快捷方式语法动态构建属性名称来创建JavaScript对象,它们必须是文本(字符串或数字):
var x = { "row1" : "sup" };
你可以这样做:
var x = {};
var rowNum = 1;
x["row" + 1] = "sup";
然而,Mongoose表达查询的一种更简单的方法是使用where
(docs):
var rand = Math.floor(Math.rand() * 2) + 1;
Rows.where("row" + rand, "sup").exec(function (err, result) {
if (err) {
console.log(err);
}
console.log(result);
});
相关文章:
- 如何从查询字符串中的输入字段发回文本
- 如何在 Meteor 中的 Mongo 查询中使用变量作为字段名称
- j查询检查复选框是否被选中,然后向输入字段添加值
- dojo.查询所需字段
- Mongoose,按填充字段对查询进行排序
- SQL查询-替换字段名称中的句点
- j查询验证单独的年、月、日的日期字段
- j查询各种字段添加,带有JSFiddle的可选复选框
- 对填充字段的 MongoDB 查询
- 隐藏字段值未显示在查询字符串中
- 查询MongoDB中不存在的字段
- 在控制台.log中显示查询的 [对象对象] 的字段
- j查询输入字段格式为 XX-XX-XX
- j查询添加必填项到输入字段
- 在MongoDB中动态查询字段
- GraphQL/中继模式”;无法查询字段&”;
- 如何在 where 子句中使用动态查询字段
- Mongodb查询字段的对象类型
- 传递嵌套文档查询字段
- 无法推断查询字段以在插入时设置错误