我正在Node.js中编写一个RESTAPI,使用Mongoose访问MongoDB后端数据库。我想提供一个APIendpoint,它返回与特定variationStatus匹配的数组对象数量的计数。
这是我到目前为止得到的,但它给了我一个空洞的回答。。。
//Get 'Approved' count
app.get("/v1/approvedcount", async (request, response) => {
var status = 'Approved';
try {
var result = await variationsModel.find({ 'variations.variationStatus': status }).exec().count();
response.send(result);
} catch (error) {
response.status(500).send(error);
}
} )
这是我的模型。。。
const variationsModel = mongoose.model("variations", {
"variations": [
{
"variationID": String,
"custID": String,
"projID": String,
"variationTitle": String,
"variationDesc": String,
"variationStatus": String,
"variationChargeable": String,
"variationCost": String,
"requireMaterial": String,
"variationRequestor": String,
"variationCreationDate": String,
"variationImages": [
{
"imageId": String
}
],
"variationCategory": String
}
]
});
有人帮我吗?
谢谢
您可以使用MongoDB聚合管道来实现相同的功能。
试试这个:
variationsModel
.aggregate([{
$match : {
'variations.variationStatus' : status
}
},{
$unwind : "variations"
},{
$match : {
'variations.variationStatus' : status
}
},{
$group : {
_id : "$_id",
variations : {
$push : '$variations'
}
}
},{
$project : {
count : {$size : $variations}
}
}]);
说明:
>
$match
:仅选择那些在变体
数组中至少有一个元素且具有变体状态的文档:状态
============================================================================================================================================
$match
:仅选择具有变体的文档。变体状态:状态
$group
:将所有文档重新分组为原始形式(使用\u id
进行分组),并再次创建变体
数组,但这次它将只包含那些具有变体状态:状态
$project
:此步骤专门用于使用$size
计算变体数组的大小。
有关详细信息,请阅读MongoDb$unWind,$project和$size留档。
我用的是Elasticsearch 7.6 我在餐厅索引中有如下文档: 计数表示收到的订单数。 当客户在网站上按菜单名称搜索时,我想给几家餐馆中菜单数量高的餐厅打高分,并将其显示在搜索结果的顶部。 要做到这一点,似乎有必要知道无痛脚本中每个文档中匹配的菜单。 我想知道这是可能的。如果是这样,我该怎么做? 更新感谢大家的回答@jaspreet chahal 我做了这样的索引: 我想做的是在使用多重匹
在elasticsearch中,假设我有如下文档 有一个用例,如果我在搜索栏中键入“Bio”,我应该从elasticsearch中获得匹配的字段值和字段名。 对于本例, 输入:“生物” 预期产出: 我应该使用什么类型的查询?我可以想到使用NGram标记器,然后使用匹配查询。但是,我不确定如何只获得匹配的字段值(而不是整个文档)和相应的字段名作为输出。
问题内容: 为了优化起见,我试图减少我的总字段数。但是在开始之前,我想了解一下我实际上有多少个字段。端点中似乎没有任何信息,而且我不太清楚迁移工具如何进行字段计数计算。 是否可以通过某种端点或其他方法来获取指定索引的总字段数? 问题答案: 为了进一步根据其他答案提供更多信息,您可以获取映射,然后简单地计算关键字在输出中出现的次数,这将给出字段数,因为每个字段都需要一种类型:
问题内容: 这里有点复杂的SQL问题。 我目前有一个与多个字段匹配的SELECT语句,就像这样。 我想修改该语句,以使其使用OR而不是AND,从而选择与任何字段匹配的所有记录。 下一步是使用评分系统对结果进行排名。 所以… 匹配1-如果field2和field 3匹配,则得分为1400 匹配2-如果field1和field 4匹配,则得分将为1010 比赛1将在结果顶部。 对于使用SQL实现此目标
问题内容: 我有一个列表,数组或您熟悉的任何一种语言。例如,names:如果与这些名称之一匹配,我想查询该字段。 一种方法是使用OR过滤器。例如 有什么更好的办法吗?如果它是查询,则比过滤器更好。 问题答案: 哪一个Elasticsearch会像您曾经使用过的那样重写 在大多数情况下,使用布尔型过滤器时,使用过滤器比或更好。原因在Elasticsearch博客中进行了解释:http://www.e
我是cucumber新手。我想测试两个登录场景: 使用用户应该能够成功登录的有效凭据 用户应该无法登录的空用户名和密码 我有上述场景的以下代码: 在java文件中,我有以下代码: 我的问题是,场景2显示了一条警告消息: 这是否意味着对于每个场景,如有效、空和无效凭据,我都需要编写一个单独的java函数?我不能使用相同的java函数: 对于所有场景?如果运行功能文件,则会得到以下输出: 是否有任何方