2016-04-21 13 views
5

Sterownik MongoDB 2.5 ma metodę DBCollection.findAndModify() dla tego, ale MongoCollection tę metodę pomija. Po pewnym wyszukiwaniu okazało się, że teraz findOneAndUpdate() ma tę samą rolę. Ale ta metoda ma inny podpis, nie rozumiem, jak z niego korzystać. Oto polecenie Chcę wykonaćJak wykonać zapytanie MongoDB findAndModify w MongoCollection Sterownik Java 3?

db.COL1.findAndModify({ 
    query: { id: 2 }, 
    update: { 
    $setOnInsert: { date: new Date(), reptype: 'EOD' } 
    }, 
    new: true, // return new doc if one is upserted 
    upsert: true // insert the document if it does not exist 
}) 

Dokumentacja dla findOneAndUpdate method stwierdza, że ​​

Powroty: dokumentu, który został zaktualizowany. W zależności od wartości właściwości returnOriginal będzie to dokument taki jak przed aktualizacją lub po aktualizacji.

ale nie można znaleźć nic na temat tej właściwości returnOriginal. Ktoś wie, jak ustawić to poprawnie?

Odpowiedz

3

Java równoważne zapytaniu powinny iść mniej więcej tak:

odniesieniu do własności returnOriginal - masz rację - nie ma czegoś takiego. W tym miejscu javadoc nie ma znaczenia. Istnieje jednak własność returnDocument w FindOneAndUpdateOptions. Możesz ustawić go na ReturnDocument.AFTER lub ReturnDocument.BEFORE, co jest równoważne new: true/false.

+0

Flaga 'returnOriginal' powinna być' nowa FindOneAndUpdateOptions(). ReturnDocument (ReturnDocument.BEFORE)) ' – chridam

+0

@chridam nie jest' ReturnDocument.AFTER' odpowiednikiem 'new: true'? –

+0

Chociaż jest to prawdą w tym kontekście, mam na myśli to, co OP zadał w ich pytaniu, ale nie może znaleźć nic o tej własności returnOriginal. Ktoś wie, jak to ustawić poprawnie _ – chridam

Powiązane problemy