我的数据位于以下mongo结构中:
{
id:ObjectId("xyz")
name:"aaa"
>list:Array
>0:Object
fname:"John1",
lname:"Doe1"
>1:Object
fname:"John2",
lname:"Doe2"
},
{
id:ObjectId("abc")
name:"bbb"
>list:Array
>0:Object
fname:"John3",
lname:"Doe3"
>1:Object
fname:"John2",
lname:"Doe2"
}
我想检索那些匹配fname和lname以及名称的列表项。我已经尝试过以下方法,但是它们都不起作用:
1.{'list.fname':'John2'} -- It's showing all the main documents even it is
matching with one list item
2. Tried using { list: {$elemMatch: {'fname': 'John2', 'lname': 'Doe2' }}}
3. ({'list.fname':'John2'},{"name"=1,list.$=1})
4.{$match:{'list.fname':'John2'}},{$unwind:"$list"},
{$match:'list.lname':'Doe2'}}
以上方法均无效,也尝试了stackoverflow中的几个示例,但没有成功。我正在使用mongo 3.6。我还尝试在mongo spring数据中使用方法查询,但是没有用。有人可以帮忙。