mongodb数组查询 - MongoDB 查询时,如何过滤子文档?

【字号: 日期:2023-06-11浏览:24作者:雯心

问题描述

有一个文档,里面包含一个子文档,大体如下:

{ '_id' : ObjectId('59376b35a233be856d4a0731'), 'plate_number' : '京A11111', 'breakdown' : [{ 'file_id' : '4003732', 'case_number' : 'xxxx', 'lev_code' : 'B231', 'crdate' : ISODate('2016-01-19T17:00:43Z')},{ 'file_id' : '4010523', 'case_number' : 'xxxx', 'lev_code' : 'B231', 'crdate' : ISODate('2016-06-29T14:53:36Z')},{ 'file_id' : '4010980', 'case_number' : 'xxxx', 'lev_code' : 'B211', 'crdate' : ISODate('2016-07-01T17:18:40Z')} ]}

现在的需求是,如何使用PHP 7根据plate_number & lev_code查询匹配的个数

还有个问题是,如何能匹配符合条件的子文档?

# mongofind({plate_number:'京A11111', breakdown.lev_code:'B231'}){ 'breakdown' : [{ 'file_id' : '4003732', 'case_number' : 'xxxx', 'lev_code' : 'B231', 'crdate' : ISODate('2016-01-19T17:00:43Z')},{ 'file_id' : '4010523', 'case_number' : 'xxxx', 'lev_code' : 'B231', 'crdate' : ISODate('2016-06-29T14:53:36Z')},{ 'file_id' : '4010980', 'case_number' : 'xxxx', 'lev_code' : 'B211', 'crdate' : ISODate('2016-07-01T17:18:40Z')} ]}

问题解答

回答1:

建议使用MongoDB的aggreation的$filter:

https://docs.mongodb.com/mast...

Love MongoDB!Have fun!

相关文章: