elenal
9 years agoOccasional Contributor
Groovy Script to fetch latest document in collection returns inconsistent results
I'm trying to fetch the latest document from MongoDB collection.
The Groovy code is here
@Grab(group='com.gmongo', module='gmongo', version='1.5')
import com.gmongo.GMongo
import com.mongodb.MongoCredential
import com.mongodb.*
import com.mongodb.ServerAddress
import com.gmongo.*
import com.mongodb.MongoURI
import com.mongodb.DBCursor;
import com.mongodb.BasicDBObject;
import com.mongodb.BasicDBList
def mongoendpoint = context.expand( '${#Project#mongoendpoint}' )
def mongocollection=context.expand( '${#Project#mongocollection_jobs}' )
def mongo= new GMongo (new MongoURI(mongoendpoint))
def db = mongo.getDB(mongocollection)
def collection = db.getCollection("**")
DBCursor test = db.**.find().sort($natural:-1).limit(1);
if (test.hasNext() )
{
DBObject obj = test.next()
String res=obj._id
log.info(res)
}My problem is that results I'm getting are inconsistent, e.g. if I run script multiple time, approximately half of the times I'm getting correct document and half - another document, which if for sure not latest.
If I run the same query from mongo shell results are pretty consistent and correct.
Have anyone seen that before? Trying to understand if there's any error in my code etc...
Thanks