sql >> Databáze >  >> NoSQL >> MongoDB

Potřebuji načíst objekt MongoDB pouze pomocí položky filtrovaného pole

Takže v podstatě musíte udělat filtr. MongoTemplate nabízí spoustu operací pro mongodb, pokud některé metody neexistují v MongoTemplate, můžeme použít Bson Document vzor. V tom případě vyzkoušejte tento článek:Trik to skryté mongo shell dotaz.

Ve skutečnosti potřebujete dotaz Mongo něco jako následující. Pomocí $addFields jednou z níže uvedených metod. Můžete ale použít $project , $set atd. Zde $addFields přepíše vaše history_dates . (Používá se také k přidávání nových polí do dokumentu).

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

Funkční hřiště Mongo.

Musíte to převést na jarní data. Takže @Autowired MongoTemplate ve vaší třídě.

 @Autowired
    MongoTemplate mongoTemplate;

Metoda je,

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();
}

Šablona Mongo neposkytuje metody přidávání pro $addFields a $filter . Takže použijeme vzor dokumentu bson. Na jaře jsem to netestoval.




  1. Rychlý způsob, jak najít duplikáty v indexovaném sloupci v mongodb

  2. Jak zrychlit MongoDB Inserts/s?

  3. Synchronizace stylu CouchDB a řešení konfliktů na Postgres s Hasura

  4. Převod řetězce na datum v mongodb