您好我想找到数组的元素。 我想如果你看到数据库和预期的数据,你就可以理解我的问题了。
这是我的数据库。
这是一个例子。
{
member_id : "aeraew",
name....
..
items : [
{
title : "a",
category : "1",
method : "1",
money : "1",
memo : "memo",
date : "2017-01-02"
},
{
title : "b",
category : "1",
method : "1",
money : "1",
memo : "memo",
date : "2017-01-02"
},
{
title : "c",
category : "1",
method : "1",
money : "1",
memo : "memo",
date : "2017-01-03"
}
]
}
我的期望是:
{
title : "a",
category : "1",
method : "1",
money : "1",
memo : "memo",
date : "2017-01-02"
},
{
title : "b",
category : "1",
method : "1",
money : "1",
memo : "memo",
date : "2017-01-02"
},
_id : "ididid"
}
$ elemMatch只查找第一个元素,$ in" items.date" :" 2017-01-01"等......不起作用。
我能做什么?
答案 0 :(得分:0)
db.collection.aggregate(
// Pipeline
[
// Stage 1
{
$unwind: {
path: '$items'
}
},
// Stage 2
{
$match: {
'items.date': "2017-01-02"
}
},
// Stage 3
{
$group: {
_id: '$_id',
items: {
$addToSet: '$items'
}
}
},
]
);