MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tôi cần truy xuất đối tượng MongoDB chỉ với mục mảng của bộ lọc

Vì vậy, về cơ bản bạn cần phải làm bộ lọc. MongoTemplate cung cấp rất nhiều thao tác cho mongodb, nếu một số phương thức không tồn tại trong MongoTemplate, chúng ta có thể sử dụng Bson Document họa tiết. Trong trường hợp đó, hãy thử bài viết này:Thủ thuật truy vấn shell mongo ẩn.

Trên thực tế, bạn cần một truy vấn Mongo như sau. Sử dụng $addFields một trong những phương pháp được hiển thị bên dưới. Nhưng bạn có thể sử dụng $project , $set vv Tại đây $addFields ghi đè history_dates của bạn . (Nó cũng sử dụng để thêm các trường mới vào tài liệu).

{
    $addFields: {
        history_dates: {
            $filter: {
                input: "$history_dates",
                cond: {
                    $and: [{
                            $gt: ["$$this", "23/07/2020"]
                        },
                        {
                            $lt: ["$$this", "24/07/2020"]
                        }
                    ]
                }
            }
        }
    }
}

Sân chơi Mongo làm việc.

Bạn cần chuyển đổi dữ liệu này thành dữ liệu mùa xuân. Vì vậy, @Autowired MongoTemplate trong lớp học của bạn.

 @Autowired
    MongoTemplate mongoTemplate;

Phương pháp là,

public List<Object> filterDates(){

    Aggregation aggregation = Aggregation.newAggregation(
        a->new Document("$addFields",
            new Document("history_dates",
                new Document("$filter",
                    new Document("input","$history_dates")
                    .append("cond",
                        new Document("$and",
                            Arrays.asList(
                                new Document("$gt",Arrays.asList("$$this","23/07/2020")),
                                new Document("$lt",Arrays.asList("$$this","24/07/2020"))                            
                            )
                        )
                    )
                )
            )       
        )
    ).withOptions(AggregationOptions.builder().allowDiskUse(Boolean.TRUE).build());
    return mongoTemplate.aggregate(aggregation, mongoTemplate.getCollectionName(YOUR_CLASS.class), Object.class).getMappedResults();
}

Mẫu Mongo không cung cấp các phương thức thêm cho $addFields$filter . Vì vậy, chúng tôi chỉ đi với mẫu tài liệu bson. Tôi chưa thử nghiệm điều này vào mùa xuân.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nhóm MongoDB theo giờ

  2. Mongoose khác biệt giữa .save () và sử dụng update ()

  3. Cài đặt MongoDB trên CentOS 7

  4. Hướng dẫn về MongoDB với Java

  5. Sử dụng nhiều cơ sở dữ liệu Mongodb với Meteor.js