whitez
whitez

Reputation: 41

MongoDB: Count of matching nested array elements

I've got a simple parent child object stored as a document in MongoDB. Something simplistic like Order/OrderItems. (Order has an array of OrderItem)

What I'd like to do is query for a count of Order Items where they meet a set of criteria.

Example: In Order "999" find out how many order items had a quantity of 3.

db.collection.find( {OrderId:999, "OrderItems.QuantityOrdered":3} ).count();

The way this query works is it returns "1" because if it matches at least one OrderItem inside the array it will return the count of Orders matched.

How can I query for how many "OrderItems" matched?:

Upvotes: 3

Views: 4138

Answers (1)

Kyle Banker
Kyle Banker

Reputation: 4359

There's no direct way of return this sort of count with an embedded document. With this sort of ad-hoc count, your best bet is to return the document and do the count from the application.

If you want to perform this kind of count for a large number of orders, you could use map-reduce, which will output the results to a new collection.

Upvotes: 3

Related Questions