MongoDB查询嵌套数组字段匹配指定值的文档问题
正确的MongoDB查询方案
你的查询失败是因为直接用对象匹配嵌套数组元素时,MongoDB会要求整个数组元素完全匹配你指定的对象,但实际的lrUnitShares元素包含description、lrUnitShareId等额外字段,所以无法匹配。
针对嵌套数组中的taxNumber字段查询,有两种简洁的正确写法:
方式一:直接使用点符号访问嵌套字段
这是单个字段匹配最简便的方式,会匹配所有包含任意lrUnitShares元素(其中任意lrOwners元素的taxNumber等于指定值)的文档:
{"ownershipSheetB.lrUnitShares.lrOwners.taxNumber": "12345678910"}
方式二:使用$elemMatch进行多层数组匹配
如果需要同时匹配lrOwners中的多个字段(比如同时匹配taxNumber和name),可以用两层$elemMatch来精确指定数组元素的匹配条件:
{ "ownershipSheetB.lrUnitShares": { "$elemMatch": { "lrOwners": { "$elemMatch": { "taxNumber": "12345678910" } } } } }
内容的提问来源于stack exchange,提问作者Mislav Sagovac
相关产品推荐
相关产品推荐

