[英]How to run multiple query in find method mongoose?
我有一个 controller 并且我正在查询 find 方法,例如:
Campaign.find({'setting.types':'views','ownerId':{$ne:userId},$where:"this.expected_views>this.views.length"}).exec().then(doc=>{
res.status(200).json({
'message':doc
})
})
我的数据库是这样的:
{
"setting": {
"bill": "900",
"dateTime": "23-3-2020",
"expected_time": "30",
"expected_views": "30",
"types": "views"
},
"views": [
{
"5678908ygvhjkhgg": true
},
{
"hjsgsss687sHJSjhs": true
}
],
"_id": "609b7260e798aa14f8b6b2be",
"id": "609b7260e798aa14f8b6b2bd",
"imageUrl": "file.jpg",
"link": "link",
"ownerId": "dakdjdakdadmnkdsa"
}
使用我的 controller 查询后它发送message=[]
我在做什么错?
我的$where:"this.expected_views>this.views.length"
子句不起作用..
从 MongoDB 4.4 开始, $where不再支持已弃用的 BSON 类型 JavaScript 代码和 scope(BSON 类型 15)。
$where
运算符仅支持 BSON 类型字符串(BSON 类型 2)或 BSON 类型 JavaScript(BSON 类型 13)。 自 MongoDB 4.2.1 起,不推荐将 BSON 类型 JavaScript 与 scope 一起用于$where
。
我建议您使用$expr ,从 MongoDB 3.6 开始, $expr
运算符允许在查询语言中使用聚合表达式。
$expr
条件和$gt
运算符和$size
来获取数组的大小$toInt
将expected_views
从字符串转换为 integerCampaign.find({
$and: [
{
"setting.types": "views",
"ownerId": { $ne: userId }
},
{
$expr: {
$gt: [{ $toInt: "$setting.expected_views" }, { $size: "$views" }]
}
}
]
}).exec().then(doc => {
res.status(200).json({ 'message': doc });
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.