Find returning duplicate documents on sorted query.

From: Leif Mortenson <leif.mortenson@xxxxxxxxxxxxxxxxxx>
To: mongodb-user@xxxxxxxxxxxxxxxx
Date: Tue, 19 Apr 2016 12:05:04 +0900
Why ads?
Hi,
We have a very simple query that we use to get a list of documents sorted
by their name.  It returns 49 records when working correctly.

db.docs.find({}, {"_id":true, "name":true}).sort({"name":1});

Normally this works fine, but every once in a while at the end of the
returned list, one or more documents will be seen a second time.  So we get
duplicates.  When this happens they are always at the end and appear to be
sorted amongst themselves, but not as a whole.

So the "sorted list" with extra documents would be: A, B, C, D, E, F, G, H,
I, C, E

I searched around and it looks like this might be being caused because we
have other threads that are updating the records in the docs collection at
the same time.
https://www.quora.com/How-did-mongodb-return-duplicated-but-different-documents

The suggestion is to use cursor.snapshot().

The problem is that snapshot can not be used for a sorted collection.

Our solution is to scan through the resulting query, AFTER getting the
results, and strip off the duplicates at the end.  But is this the best
solution?

We are currently using Mongo 2.6.10.  If you think this might have been
resolved in a newer version we will look into the upgrade.  I didn't see
anything in the release notes.

Even getting to this level of understanding of the problem took quite a
while and it may be having unintended effects on other parts of our
application.

Thanks in advance,
Leif

-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: https://docs.mongodb.org/manual/support/
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/CAMgF1yUMn%2BZz%3DAfmc%3DD29zd6_pMadBErLkrGBSZez1wDrt%2Bssg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?