我正在尝试编写一个过滤器来将数据复制到另一个 CouchDB 服务器。作为过滤器的一部分,我想根据过滤器只选择文档的某些部分。fields
in可以获取根节点,Selector
但是如何选择嵌套元素?
这些是示例文档结构:
{
"_id" : "1231212",
"name" : "",
"a" : [
{
"x" : "123",
"y": "123" ,
"z" : 123"",
"l" : [1, 2, 3]
},
{
"x" : "456",
"y": "456" ,
"z" : "456",
"l" : [4, 5, 6]
}
]
}
{
"_id" : "34534545",
"name" : "",
"a" : [
{
"x" : "222",
"y": "333" ,
"z" : 444"",
"l" : [6, 7, 8]
},
{
"x" : "66",
"y": "66" ,
"z" : "888",
"l" : [2, 9, 7]
}
]
}
是否可以放置一个选择器来选择字段,它是数组中的一个元素。在上面的 Doc 结构中,我可以使用数组“l”中的元素过滤数据,但我只能显示该元素。
{
"selector": {
"a": {
"$elemMatch": {
"l": {
"$in": [
4
]
}
}
}
},
"fields": [
"name",
"a"
]
}
如果我使用这个选择器,它会给出“a”数组的两个元素。但我只需要过滤后的元素。
对于上述过滤器,我期待:
{
name : "",
"a" : [
{
"x" : "456",
"y": "456" ,
"z" : "456",
"l" : [4, 5, 6]
}
]
}
我得到的是
{
"_id" : "1231212",
"name" : "",
"a" : [
{
"x" : "123",
"y": "123" ,
"z" : 123"",
"l" : [1, 2, 3]
},
{
"x" : "456",
"y": "456" ,
"z" : "456",
"l" : [4, 5, 6]
}
]
}
可能吗?