我想从MongoDB中的文档中检索子文档.我有以下文件:
{ "_id" : "10000", "password" : "password1", "name" : "customer1", "enabled" : true, "channels" : [ { "id" : "10000-1", "name" : "cust1chan1", "enabled" : true }, { "id" : "10000-2", "name" : "cust1chan2", "enabled" : true } ] }
我想要的结果是:
{ "id" : "10000-1", "name" : "cust1chan1", "enabled" : true }
但是,到目前为止我能做的最好的事情是使用以下查询:
db.customer.find({"channels.id" : "10000-1"}, {"channels.$" : 1, "_id" : 0})
但这给了我以下结果:
{ "channels" : [ { "id" : "10000-1", "name" : "cust1chan1", "enabled" : true } ] }
有谁知道是否可以编写一个能给我想要的结果的查询?任何帮助将非常感激.
您可以使用聚合框架来完成它.查询将是这样的:
db.customer.aggregate([ {$unwind : "$channels"}, {$match : {"channels.id" : "10000-1"}}, {$project : {_id : 0, id : "$channels.id", name : "$channels.name", enabled : "$channels.enabled"}} ])