user555303
user555303

Reputation: 1374

How to find document in CouchDB where document has an array that contains a specific string?

I am just getting started working with CouchDB.

We have a database where the documents look like:

  "_id": "43538c8409dd",
  "_rev": "123",
  "audit": false,
  "members": {
    "users": [
      {
        "dn": "cn=newuser1,ou=people,dc=foo,dc=com",
        "dateAdded": "2020-12-02T16:52:41:748Z"
      },
      {
        "dn": "cn=newuser2,ou=people,dc=foo,dc=com",
        "dateAdded": "2020-12-02T16:52:41:748Z"
      }
    ],
    "groups": []
  },
.
.
.
}

I am trying to find all documents in the database that contain (for example) "dn" with value "cn=newuser1,ou=people,dc=foo,dc=com".

I have tried a selector like:

   "selector": {
      "users": {
         "$elemMatch": {
            "dn": "cn=newuser1,ou=people,dc=foo,dc=com"
         }
      }
   }
}

I know that there are several documents that should match, but I am getting "No Documents Found".

Can someone tell me why this search is not working?

Thanks, Jim

Upvotes: 0

Views: 223

Answers (1)

RamblinRose
RamblinRose

Reputation: 4963

The rather important members field is not being specified. This is likely the query intended

{
   "selector": {
      "members.users": {
         "$elemMatch": {
            "dn": "cn=newuser1,ou=people,dc=foo,dc=com"
         }
      }
   }
}

Upvotes: 3

Related Questions