我在nep_caixa_retaguarda集合中有以下文档
rs0:PRIMARY> db.atendimento_sara.findOne()
{
'_id' : ObjectId('5cee9785d1805f2b288a1614'),
'usu_nu_usuario_abertura' : 511773,
'cxr_nu_caixa_retaguarda' : 23008369,
'dataAberturaSP' : ISODate('2019-01-02T00:11:24Z'),
'caixa' : [
{
'usu_nu_usuario' : 108349,
'cax_nu_caixa' : 89792153,
'dataAberturaSP' : ISODate('2019-01-02T18:54:45Z')
},
{
'usu_nu_usuario' : 498100,
'cax_nu_caixa' : 89791110,
'dataAberturaSP' : ISODate('2019-01-02T15:43:33Z')
},
{
'usu_nu_usuario' : 511773,
'cax_nu_caixa' : 89771306,
'dataAberturaSP' : ISODate('2019-01-02T00:11:38Z')
}
]
}
{
'_id' : ObjectId('6fhj9785d1807f2c289a3616'),
'usu_nu_usuario_abertura' : 511700,
'cxr_nu_caixa_retaguarda' : 23008370,
'dataAberturaSP' : ISODate('2019-01-02T00:15:24Z'),
'caixa' : [
{
'usu_nu_usuario' : 108300
'cax_nu_caixa' : 89792161,
'dataAberturaSP' : ISODate('2019-01-02T18:59:45Z')
},
{
'usu_nu_usuario' : 498103,
'cax_nu_caixa' : 89791177,
'dataAberturaSP' : ISODate('2019-01-02T15:40:33Z')
},
{
'usu_nu_usuario' : 511700,
'cax_nu_caixa' : 89771350,
'dataAberturaSP' : ISODate('2019-01-02T00:27:38Z')
}
]
}
我只选择具有“ cax_nu_caixa”字段的文档:89771306
尝试过的db.atendimento_sara.find({'caixa.cax_nu_caixa':89771306},{'cxr_nu_caixa_retaguarda':1,'caixa.cax_nu_caixa':1})。pretty()
返回
{
'_id' : ObjectId('5cee9785d1805f2b288a1614'),
'cxr_nu_caixa_retaguarda' : 23008369,
'caixa' : [
{
'cax_nu_caixa' : 89792153
},
{
'cax_nu_caixa' : 89791110
},
{
'cax_nu_caixa' : 89771306
},
{
'cax_nu_caixa' : 89788026
},
{
'cax_nu_caixa' : 89782847
},
{
'cax_nu_caixa' : 89787922
},
{
'cax_nu_caixa' : 89788272
}
]
}
但是我只想要这个。我该怎么办?
{
'_id' : ObjectId('5cee9785d1805f2b288a1614'),
'cxr_nu_caixa_retaguarda' : 23008369,
'caixa' : [
{
'cax_nu_caixa' : 89771306
}
]
}
还有更多, 如果我还有一个更高的级别(如以下情况),我要在哪里搜索“ attend_nu”:100?
rs0:PRIMARY> db.atendimento_sara.findOne()
{
'_id' : ObjectId('5cee9785d1805f2b288a1614'),
'usu_nu_usuario_abertura' : 511773,
'cxr_nu_caixa_retaguarda' : 23008369,
'dataAberturaSP' : ISODate('2019-01-02T00:11:24Z'),
'caixa' : [
{
'usu_nu_usuario' : 108349,
'cax_nu_caixa' : 89792153,
'dataAberturaSP' : ISODate('2019-01-02T18:54:45Z')
'atendimento': [{
'atend_nu' : 100,
'dataInicioSP' : ISODate('2019-01-02T18:54:45Z'),
{
'atend_nu' : 101,
'dataInicioSP' : ISODate('2019-01-02T18:54:45Z'),
{
'atend_nu' : 102,
'dataInicioSP' : ISODate('2019-01-02T18:54:45Z')
])
},
{
'usu_nu_usuario' : 498100,
'cax_nu_caixa' : 89791110,
'dataAberturaSP' : ISODate('2019-01-02T15:43:33Z')
'atendimento': [{
'atend_nu' : 104,
'dataInicioSP' : ISODate('2019-01-02T18:54:45Z'),
{
'atend_nu' : 105,
'dataInicioSP' : ISODate('2019-01-02T18:54:45Z'),
{
'atend_nu' : 106,
'dataInicioSP' : ISODate('2019-01-02T18:54:45Z')
])
},
{
'usu_nu_usuario' : 511773,
'cax_nu_caixa' : 89771306,
'dataAberturaSP' : ISODate('2019-01-02T00:11:38Z')
'atendimento': [{
'atend_nu' : 107,
'dataInicioSP' : ISODate('2019-01-02T18:54:45Z'),
{
'atend_nu' : 108,
'dataInicioSP' : ISODate('2019-01-02T18:54:45Z'),
{
'atend_nu' : 109,
'dataInicioSP' : ISODate('2019-01-02T18:54:45Z')
])
}
]
}
答案 0 :(得分:0)
您需要为此进行汇总。试试:
db.atendimento_sara.aggregate([
{
$match: {
"caixa.cax_nu_caixa": 89771306
}
},
{
$unwind: "$caixa"
},
{
$match: {
"caixa.cax_nu_caixa": 89771306
}
},
{
$project: {
cxr_nu_caixa_retaguarda: 1,
"caixa.cax_nu_caixa": 1
}
}
])