Java MongoDB投影

哈米德

我指的是mongodb官方页面进行投影,遇到以下示例,其中子文档中的数组元素被过滤:https : //docs.mongodb.com/manual/reference/operator/aggregation/filter/#exp._S_filter

db.sales.aggregate([
   {
      $project: {
         items: {
            $filter: {
               input: "$items",
               as: "item",
               cond: { $gte: [ "$$item.price", 100 ] }
            }
         }
      }
   }
])

我正在尝试用Java实现此功能,但我没有正确执行,并且未过滤子文档数组中的元素。

输入集合:

{
   _id: 0,
   items: [
     { item_id: 43, quantity: 2, price: 10 },
     { item_id: 2, quantity: 1, price: 240 }
   ]
}
{
   _id: 1,
   items: [
     { item_id: 23, quantity: 3, price: 110 },
     { item_id: 103, quantity: 4, price: 5 },
     { item_id: 38, quantity: 1, price: 300 }
   ]
}
{
    _id: 2,
    items: [
       { item_id: 4, quantity: 1, price: 23 }
    ]
}

预期产出:

{
   "_id" : 0,
   "items" : [
      { "item_id" : 2, "quantity" : 1, "price" : 240 }
   ]
}
{
   "_id" : 1,
   "items" : [
      { "item_id" : 23, "quantity" : 3, "price" : 110 },
      { "item_id" : 38, "quantity" : 1, "price" : 300 }
   ]
}
{ "_id" : 2, "items" : [ ] }

在Java(mongo驱动程序3.9.1)中,这就是我正在做的:

Bson priceFilter = Filters.gte("items.price", 100);
mongoCollection.aggregate(
  Aggregates.project(Projections.fields(priceFilter))
);

如何在需要基于某种条件从子文档数组中滤除元素的子文档数组中使用聚合函数进行投影?

RLD

MongoDB Java驱动程序3.9.1中collection.aggregate()java.util.List作为参数。因此,您需要使用以下代码替换Java代码。

mongoCollection.aggregate(
                  Arrays.asList(
                               Aggregates.project(Projections.computed("items",
                                    new Document().append("$filter",
                                            new Document().append("input", "$items").append("as", "item").append("cond", 
                                                     new Document().append("$gte",Arrays.asList("$$item.price",100))))))
                              )
                   );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Mongodb 投影不适用于 Java

来自分类Dev

MongoDB索引和投影

来自分类Dev

SpringData MongoDB使用投影

来自分类Dev

MongoDB条件投影

来自分类Dev

MongoDB findOneAndUpdate投影

来自分类Dev

mongodb中的投影查询

来自分类Dev

mongoDb条件投影查询

来自分类Dev

使用MongoDB投影

来自分类Dev

了解重叠的mongodb投影

来自分类Dev

mongoDB findOneAndUpdate() 中的 $ 投影

来自分类Dev

MongoDB嵌套数组的投影

来自分类Dev

在 Mongodb 投影中使用 toString()

来自分类Dev

全局方法进行投影(Java)

来自分类Dev

MongoDB聚合投影的工作方式与查找投影的方式不同

来自分类Dev

使用MongoDB投影来嵌套整个文档?

来自分类Dev

Mongodb投影返回给定位置

来自分类Dev

MongoDB投影数量大于2的文档

来自分类Dev

在mongodb投影中结合$ elemMatch和$

来自分类Dev

MongoDB-投影并不总是存在的字段

来自分类Dev

spring-data-mongodb嵌套文档投影

来自分类Dev

过滤投影在 mongodb 中不起作用

来自分类Dev

如何在mongodb中结合投影和分页?

来自分类Dev

MongoDB投影是其他字段的布尔值的结果

来自分类Dev

MongoDB:将查询限制为字段和数组投影

来自分类Dev

如何在mongodb中结合投影和分页?

来自分类Dev

如何将分组投影到mongodb中的对象?

来自分类Dev

MongoDB C#驱动程序字段投影

来自分类Dev

如何在Go和mgo中使用mongodb投影?

来自分类Dev

MongoDB-仅投影数组中匹配的元素