Mongodb 如何查询嵌套的异构文档
我有一个具有以下格式的数组:Mongodb 如何查询嵌套的异构文档,mongodb,Mongodb,我有一个具有以下格式的数组: data{ [sequentialId]{guid:value1,name:value2} } 我需要做一些类似db.data.find(“data.?.name”:“value1”)的事情 我看到的所有解决方案都不起作用,因为它们希望我知道属性的名称,但在本例中,ID是连续的 我已经研究了这里描述的查询嵌套文档的标准方法 我还考虑了一些选项,比如$REWIND,但我无法让任何东西起作用 这是一个小样本 {"41":{"b":453081600,"f":1,"
data{
[sequentialId]{guid:value1,name:value2}
}
我需要做一些类似db.data.find(“data.?.name”:“value1”)的事情
我看到的所有解决方案都不起作用,因为它们希望我知道属性的名称,但在本例中,ID是连续的
我已经研究了这里描述的查询嵌套文档的标准方法
我还考虑了一些选项,比如$REWIND,但我无法让任何东西起作用
这是一个小样本
{"41":{"b":453081600,"f":1,"h":171,"s":4,"w":4,"wr":[2,0]},
"80":{"b":337132800,"f":2,"h":169,"s":4,"w":4,"wr":[0,0]},
"388":{"b":148694400,"f":1,"h":188,"l":{"c":[{"e":2001,"g":13,"m":292,"s":1992,"t":18},{"e":2006,"g":11,"m":197,"s":2001,"t":1},{"e":2009,"g":2,"m":111,"s":2006,"t":1790},{"e":2009,"g":0,"m":1,"s":2009,"t":1937},{"e":2010,"g":1,"m":14,"s":2010,"t":1},{"e":2011,"g":0,"m":8,"s":2010,"t":13}],"n":[{"e":2007,"g":1,"m":73,"s":1996,"t":1318}]},"s":2,"w":3,"wr":[0,0]}}
例如,在这组数据中,我可能需要查询“f”=1的所有文档,以下查询可以获得预期的输出: 注意:我们提取的文件的
名称
等于a
数据集:
{
"data":[
{
"41": {
"b": 453081600,
"name": "a"
},
"80": {
"b": 337132800,
"name": "b"
},
"388": {
"b": 148694400,
"name": "c"
}
}
]
}
{
"data":[
{
"41": {
"b": 453081600,
"name": "b"
},
"80": {
"b": 337132800,
"name": "b"
},
"388": {
"b": 148694400,
"name": "c"
}
}
]
}
{
"data":[
{
"41": {
"b": 453081600,
"name": "a"
},
"80": {
"b": 337132800,
"name": "b"
},
"388": {
"b": 148694400,
"name": "c"
}
}
]
}
输出:
{
"data":[
{
"41": {
"b": 453081600,
"name": "a"
},
"80": {
"b": 337132800,
"name": "b"
},
"388": {
"b": 148694400,
"name": "c"
}
}
]
}
{
"data":[
{
"41": {
"b": 453081600,
"name": "b"
},
"80": {
"b": 337132800,
"name": "b"
},
"388": {
"b": 148694400,
"name": "c"
}
}
]
}
{
"data":[
{
"41": {
"b": 453081600,
"name": "a"
},
"80": {
"b": 337132800,
"name": "b"
},
"388": {
"b": 148694400,
"name": "c"
}
}
]
}
查询分析:
- 我们正在创建一个过滤数组,以仅保存
数组中的记录,该数组包含数据
等于名称
,位于具有未知键的任何子文档中李>a
- 首先将
转换为键值对数组。现在我们可以直接查询值,而不用担心键数据的每个文档
- 最后,过滤
数组大小大于零的文档filtered