Mongo array query, how to return only the current matching array?

  mongodb, question
db.test.find();
 {
 _id: ObjectId('55e99a2190df7a911d6ed1f1'),
 list: [
 {
 "aa": 10,
 "data": "test"
 },
 {
 "aa": 1,
 "data": "test"
 }
 ]
 }
 
 db.test.find({_id: ObjectId('55e99a2190df7a911d6ed1f1'), list: {'$elemMatch': {'aa': 1}}})
 Expected results:
 {_id: ObjectId('55e99a2190df7a911d6ed1f1'),
 list: {
 "aa": 1,
 "data": "test"
 }
> db.customer.find().pretty()
 {
 "_id" : ObjectId("559bb1d1d39f0dcac2658f8e"),
 "cust_id" : "abc123",
 "ord_date" : ISODate("2012-10-03T16:00:00Z"),
 "status" : "A",
 "price" : 25,
 "items" : [
 {
 "sku" : "mmm",
 "qty" : 5,
 "price" : 2.5
 },
 {
 "sku" : "nnn",
 "qty" : 5,
 "price" : 2.5
 }
 ]
 }
 {
 "_id" : ObjectId("559bb1ead39f0dcac2658f8f"),
 "cust_id" : "abc123",
 "ord_date" : ISODate("2012-10-03T16:00:00Z"),
 "status" : "B",
 "price" : 30,
 "items" : [
 {
 "sku" : "mmm",
 "qty" : 6,
 "price" : 3.5
 },
 {
 "sku" : "nnn",
 "qty" : 6,
 "price" : 3.5
 }
 ]
 }
 {
 "_id" : ObjectId("559bb200d39f0dcac2658f90"),
 "cust_id" : "abc123",
 "ord_date" : ISODate("2012-10-03T16:00:00Z"),
 "status" : "C",
 "price" : 35,
 "items" : [
 {
 "sku" : "mmm",
 "qty" : 7,
 "price" : 4.5
 },
 {
 "sku" : "nnn",
 "qty" : 7,
 "price" : 4.5
 }
 ]
 }
 > db.customer.find ({"items.qty": 6}, {"items. $": 1}). predity ()//returns only one element that matches the query criteria
 {
 "_id" : ObjectId("559bb1ead39f0dcac2658f8f"),
 "items" : [
 {
 "sku" : "mmm",
 "qty" : 6,
 "price" : 3.5
 }
 ]
 }

Query matching embedded documents, you can also directly query, such as:

> db.customer.find({"items.qty":6}).pretty()
 {
 "_id" : ObjectId("559bb1ead39f0dcac2658f8f"),
 "cust_id" : "abc123",
 "ord_date" : ISODate("2012-10-03T16:00:00Z"),
 "status" : "B",
 "price" : 30,
 "items" : [
 {
 "sku" : "mmm",
 "qty" : 6,
 "price" : 3.5
 },
 {
 "sku" : "nnn",
 "qty" : 6,
 "price" : 3.5
 }
 ]
 }

Corresponding to your above query implementation:

> db.customer.find({"_id":ObjectId("559bb1ead39f0dcac2658f8f"),items: {'$elemMatch': {'sku': "mmm"}}},{"items.$":1}).pretty()
 {
 "_id" : ObjectId("559bb1ead39f0dcac2658f8f"),
 "items" : [
 {
 "sku" : "mmm",
 "qty" : 6,
 "price" : 3.5
 }
 ]
 }

db.test.find({_id: ObjectId(’55e99a2190df7a911d6ed1f1′), list: {‘$elemMatch’: {‘aa’: 1}}},{“list.$”:1}).pretty()