使用 javascript 模板文字的猫鼬数组查询构造
mongoose array query construction with javascript template literals
我正在使用 mongodb 和猫鼬与 expressjs
我的数据库有以下数组:
_id:6262013fa90e7b533809140d
isactive:true
schedule:Array
0:Object
1:Object
2:Object
3:Object
4:Object
5:Object
6:Object
name:"whatever"
description:"describe somthing"
在我的 expressjs 路由中,我正在尝试构建这样的查询:
app.get("/getmenu", (req, res)=>{
let getdate = new Date()
let getday = getdate.getDay()-1
Category.find({ "schedule.1.availabletoday" : "true" },
function(error, categories){
console.log("categories :", categories)
res.json({"activecategories" : categories})
})
})
这确实有效并返回了正确的结果,除了我需要下面的行来包含模板文字或类似的东西,让我解释一下:
"schedule.1.availabletoday"
我需要用 getday 值替换 1。如果 getday 值为 0,则查询将为
"schedule.0.availabletoday"
如果 getday 值为 2,则查询将去寻找:
"schedule.2.availabletoday"
那么如何在我的查询中包含 getday 值,如下所示:
"schedule.getday.availabletoday"
我试过了
"schedule.${getday}.availabletoday"
但它返回了空结果,空的意思是:[]
我试过了
"schedule.getday.availabletoday"
查询返回空结果:[]
根据 mongodb 文档,要搜索数组元素,我需要在数组元素查询两边加上引号。所以我不能只写这个:
schedule.getday.availabletoday
我是否需要更新我的节点或 expressjs 应用程序才能使用模板文字,还是我在这里缺少其他东西?
这应该适合你:
let getdate = new Date();
let day = getdate.getDay()-1;
let query = {};
query[`schedule.${day}.availabletoday`] = true;
Category.find(query, (err, categories)=> {
console.log("categories :", categories)
res.json({"activecategories" : categories})
})
使用模板字符串作为
`schedule.${getday}.availabletoday`
按照你的例子:
app.get("/getmenu", (req, res)=>{
let getdate = new Date()
let getday = getdate.getDay()-1
Category.find({ `schedule.${getday}.availabletoday` : true },
function(error, categories){
console.log("categories :", categories)
res.json({"activecategories" : categories})
})
我正在使用 mongodb 和猫鼬与 expressjs
我的数据库有以下数组:
_id:6262013fa90e7b533809140d
isactive:true
schedule:Array
0:Object
1:Object
2:Object
3:Object
4:Object
5:Object
6:Object
name:"whatever"
description:"describe somthing"
在我的 expressjs 路由中,我正在尝试构建这样的查询:
app.get("/getmenu", (req, res)=>{
let getdate = new Date()
let getday = getdate.getDay()-1
Category.find({ "schedule.1.availabletoday" : "true" },
function(error, categories){
console.log("categories :", categories)
res.json({"activecategories" : categories})
})
})
这确实有效并返回了正确的结果,除了我需要下面的行来包含模板文字或类似的东西,让我解释一下:
"schedule.1.availabletoday"
我需要用 getday 值替换 1。如果 getday 值为 0,则查询将为
"schedule.0.availabletoday"
如果 getday 值为 2,则查询将去寻找:
"schedule.2.availabletoday"
那么如何在我的查询中包含 getday 值,如下所示:
"schedule.getday.availabletoday"
我试过了
"schedule.${getday}.availabletoday"
但它返回了空结果,空的意思是:[]
我试过了
"schedule.getday.availabletoday"
查询返回空结果:[]
根据 mongodb 文档,要搜索数组元素,我需要在数组元素查询两边加上引号。所以我不能只写这个:
schedule.getday.availabletoday
我是否需要更新我的节点或 expressjs 应用程序才能使用模板文字,还是我在这里缺少其他东西?
这应该适合你:
let getdate = new Date();
let day = getdate.getDay()-1;
let query = {};
query[`schedule.${day}.availabletoday`] = true;
Category.find(query, (err, categories)=> {
console.log("categories :", categories)
res.json({"activecategories" : categories})
})
使用模板字符串作为
`schedule.${getday}.availabletoday`
按照你的例子:
app.get("/getmenu", (req, res)=>{
let getdate = new Date()
let getday = getdate.getDay()-1
Category.find({ `schedule.${getday}.availabletoday` : true },
function(error, categories){
console.log("categories :", categories)
res.json({"activecategories" : categories})
})