{
"Field1": "ABC",
"Field2": [
{ "Field3": "ABC1","Field4": "REVIEWED","Field5":"True" },
{ "Field3": "ABC2","Field4": "APPROVED","Field5":"True" },
{ "Field3": "ABC3","Field4": "REJECTED","Field5":"True" },
{ "Field3": "ABC4","Field4": "APPROVED","Field5":"False" }
]
}
我想获取已批准、已审查和真实记录即。
{
"Field1": "ABC",
"Field2": [
{ "Field3": "ABC1","Field4": "REVIEWED","Field5":"True" },
{ "Field3": "ABC2","Field4": "APPROVED","Field5":"True" }
]
}
以下 MONGO 聚合查询返回正确的结果
{
"$project": {
"Field1": "$Field1",
"Field2": {
"$filter": {
"input": "$field2",
"as": "fld2",
"cond": {
"$and": [
{
"$in": [
"$$fld2.field4",
[
"APPROVED",
"REVIEWED"
]
]
},
{
"$eq": [
"$$fld2.field5",
"True"
]
}
]
}
}
}
}
}
如何在Springmongo数据db中实现上述查询?Spring Project操作与ArrayOperators.Filter.filter不提供链接操作做和另一个条件。
您可以像这样尝试使用BasicBObject
BasicDBObject inOp = new BasicDBObject("$in", Arrays.<Object>asList(
"$$fld2.field4",
Arrays.asList("APPROVED","REVIEWED")));
BasicDBObject eqOp = new BasicDBObject("$eq", Arrays.<Object>asList(
"$$fld2.field5",
"True"));
BasicDBObject andOp = new BasicDBObject("$and", Arrays.<Object>asList(inOp, eqOp));
project("Field1")
.and(new AggregationExpression() {
@Override
public DBObject toDbObject(AggregationOperationContext aggregationOperationContext) {
DBObject filterExpression = new BasicDBObject();
filterExpression.put("input","$field2");
filterExpression.put("as", "fld2");
filterExpression.put("cond",andOp);
return new BasicDBObject("$filter", filterExpression);
}
}).as("Field2");
我收集了用户在商店购买的物品,以及他从朋友那里得到的喜欢和不喜欢的东西。集合字段如下所示: 现在,我想得到以下总结: 获取用户X的(喜欢-不喜欢)差异 获取用户X的差异(喜欢-不喜欢)到存储Y 获取用户X的(喜欢-不喜欢)差异到商店Y和产品Z 对于#1,我做了: 我得到了正确的结果: [{"_id":"542ea90fbb1e37b09f660980","rankDiff": 2}] 但当我试图通
问题内容: 我是ElasticSearch的新手。 当前,我们正在将代码从关系数据库迁移到ElasticSearch。因此,我们正在将查询转换为ElasticSearch查询格式。 我正在寻找与以下查询等效的ElasticSearch- 有人可以为我提供上面的ElasticSearch查询示例吗? 问题答案: 根据上面的查询,您将拥有一个带有类型文档的索引,该文档的映射如下所示: 然后,相当于您上
假设我有一张房间清单 每个房间都有一份人员名单。 使用java8 streams,我想迭代房间列表,获取所有人员,在每个节点上执行一些方法(doSomething()),并获取所有过滤对象的列表。 这是使用java 8的最佳实践吗?
问题内容: 我正在尝试对某些条件过滤后的值进行汇总。我正在使用spring数据的ElasticSearchTemplate.query()方法也执行查询并在结果提取器中获取结果。我正确地找到了匹配(即应用了过滤器,并且仅检索了与这些值匹配的文档。)。但是,汇总是在所有文档上执行的。我认为汇总应仅应用于过滤后的值。以下是我正在使用的代码: 为了进一步调试问题,我编写了代码来执行查询,而不是使用spr
问题内容: 如何在$ lookup之后添加过滤器,或者有其他方法可以执行此操作? 我的数据收集测试是: 我选择ID 100并汇总孩子: 我回来了: 但我只希望与“值:1”匹配的子项 最后,我希望得到以下结果: 问题答案: 这里的问题实际上是关于一些不同的东西,根本不需要。但是,对于仅从“$lookup之后过滤”标题到达此处的任何人,这些都是适合您的技术: MongoDB 3.6-子管道 较早-$
我想根据字段中的关键字出现来制作桶。 我检查了elasticsearch留档,发现过滤器聚合应该很合适:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html#search-aggregations-bucket-filte