w3resource

How to Find Documents by IDs in an Array in MongoDB

Find Documents with Specific IDs in MongoDB

To retrieve documents in MongoDB that match a list of specific IDs, you can use the $in operator with the _id field. The $in operator lets you match any document where a specified field’s value appears in an array of values. This approach is particularly useful when you need to query multiple documents by their unique identifiers.

Description:

In MongoDB, you can retrieve multiple documents whose _id field matches any ID in a given array by using the $in operator. This query structure is useful for bulk-fetching specific documents based on their unique identifiers without needing multiple queries.

Syntax:

To find documents with IDs listed in an array, use the following syntax:

db.<collection>.find({ _id: { $in: [<id1>, <id2>, ...] } })

Explanation:

  • <collection>: The name of the collection you’re querying.
  • <id1>, <id2>, ...: The list of _id values you want to match in the query.

Example:

Suppose you have a products collection and want to find all documents with specific IDs ObjectId("64b5a2..."), ObjectId("64b5a3..."), and ObjectId("64b5a4...").

Code:

// Query the 'products' collection for documents with specific IDs
db.products.find({ 
  _id: { $in: [ObjectId("64b5a2..."), ObjectId("64b5a3..."), ObjectId("64b5a4...")] } 
})

Explanation:

  • db.products.find(...)
    • Calls the find() method on the products collection to retrieve documents matching the specified criteria.
  • { _id: { $in: [...] } }
    • The query specifies that _id should match any value within the array using the $in operator. This allows MongoDB to return any document where _id matches one of the listed IDs.
    • Inside the array, each ID is wrapped in the ObjectId() function, which converts the string to MongoDB’s ObjectId format.

This query will return all documents in products where the _id field matches any of the IDs in the provided array.

Additional Notes:

  • Matching Other Fields: You can use the $in operator on other fields as well. For example, { category: { $in: ["electronics", "furniture"] } } would match documents where the category is either "electronics" or "furniture".
  • ObjectId Format: Make sure each ID in the array is wrapped in ObjectId() if it’s a MongoDB ObjectId. Omitting this will cause the query to fail, as _id fields require ObjectId format for matching.


Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/mongodb/snippets/find-documents-with-specific-ids-in-mongodb.php