我有这个JSON数据结构:
{
data :
{
fields_data :
[
[
{
key1 : val
},
{
key1 : val
}
],
[
{
key2 : val
},
{
key2 : val
}
]
]
}
}
我很难对此进行查询,我试图以其他方式使用in和elemMatch,但没有成功。
我尝试过的一个问题:
{
"data.fields_data": {
$in: [{
$in: [{
$elemMatch:
{
$elemMatch : {
"key1": "random text"
}
}
}]
}]
}
}
有什么建议吗?
答案 0 :(得分:0)
好吧,嵌套的$elemMatch
应该在这里工作:
db.collection.find{
'data.fields_data': {
$elemMatch: {
$elemMatch: {
key1: val
}
}
}
}
但你应该考虑在这里摆脱嵌套数组。例如,您可以使用数组if if:
{
data: {
fields_data: [{
data: [
{ key1: val },
{ key1: val }
]}, {
data: [
{ key2: val },
{ key2: val }
]}
]
}
}
它允许您使用简单的点符号查询文档:
{ 'data.fields_data.data.key1': val }