lyjackal
lyjackal

Reputation: 3984

Is my MongoDB index corrupt? adding additional query parameter increases the found documents

My query is failing to find all matching results. If I add an additional _id parameter to a specific matching example, I am getting results

> db.reviews.count({"contentProvider":"GLORP", "responses.0": {$exists: true}})
0
> db.reviews.count({_id: "1234", "contentProvider":"GLORP", "responses.0": {$exists: true}})
1

the first query is using index:

"indexName" : "contentProvider_1_reviewDetail_1_reviewerUserName_1_providerReviewId_1",

and the query with the _id is of course using the _id_ index:

"indexName" : "_id_"

Here is the index in question:

{
    "v" : 1,
    "key" : {
        "contentProvider" : 1,
        "reviewDetail" : 1,
        "reviewerUserName" : 1,
        "providerReviewId" : 1
    },
    "name" : "contentProvider_1_reviewDetail_1_reviewerUserName_1_providerReviewId_1",
    "ns" : "test.reviews",
    "background" : true
}

Using mongodb version 3.2.3

Is the index corrupted? Will dropping it and readding it likely fix the problem?

Upvotes: 0

Views: 1027

Answers (1)

raybot
raybot

Reputation: 9

It's possible and you could certainly try it, however without knowing what version of MongoDB you are using and without seeing the index definition I cannot say for certain.

There are multiple different types of indexes as well as index properties like: sparse or partial that can change behavior and may explain why the index doesn't return the results you expect.

I'd recommend checking the index first and see if the index definition has any properties that would result in the document being excluded.

If not then you can always drop the index and recreate it.

Upvotes: 0

Related Questions