1、有如下集合:
db.bankcard.find().pretty()
{
"_id" : ObjectId("594b95245557e13770310dd6"),
"bankCards" : [
{
"accountNo" : 1343
},
{
"accountNo" : 1234
}
]
}
2、只想返回 accountNo为1343的数组元素:
{
"_id" : ObjectId("594b95245557e13770310dd6"),
"bankCards" : [
{
"accountNo" : 1343
}
]
}
3、但是使用如下查询方式,返回了所有数据:
db.bankcard.find({_id: ObjectId("594b95245557e13770310dd6"),"bankCards.accountNo": 1343}).pretty()
4、要想只返回1343的数组元素,使用以下方式:
db.bankcard.find({_id: ObjectId("594b95245557e13770310dd6"),"bankCards.accountNo": 1343}, {"bankCards.$": 1}).pretty()
{
"_id" : ObjectId("594b95245557e13770310dd6"),
"bankCards" : [
{
"accountNo" : 1343
}
]
}
在需要对数组中的值进行操作的时候,可通过位置或者定位操作符("$").数组是0开始的,可以直接将下标作为键来选择元素。5、mophia 查询
BankCard bankCard = (BankCard)this.q().retrievedFields(true, "bankCards.$") .filter("memberId", new ObjectId(uid)) .filter("bankCards.accountNo", bankCards.getAccountNo()) .get(); System.out.println(bankCard.getBankCards().get(0).getAccountNo());