在couchDB的数组字段上应用筛选器
我正在研究Hyperledger结构。我需要数组中的特定值,而不是CouchDB中的完整文档 范例在couchDB的数组字段上应用筛选器,couchdb,hyperledger-fabric,blockchain,hyperledger-chaincode,couchdb-mango,Couchdb,Hyperledger Fabric,Blockchain,Hyperledger Chaincode,Couchdb Mango,我正在研究Hyperledger结构。我需要数组中的特定值,而不是CouchDB中的完整文档 范例 { "f_id": "1", "History": [ { "amount": "1", "contactNo": "-", "email": "i2@mail.com" }, { "amount": "5", "contactNo": "-", "email": "i@gmail.com",
{
"f_id": "1",
"History": [
{
"amount": "1",
"contactNo": "-",
"email": "i2@mail.com"
},
{
"amount": "5",
"contactNo": "-",
"email": "i@gmail.com",
}
],
"size": "12"
}
我只想要一封电子邮件:i2@mail.com历史数组上的对象,而不是完整的历史数组
芒果查询:
{
"selector": {
"History": {
"$elemMatch": {
"email": "i2@mail.com"
}
}
}
}
输出:
{
"f_id": "1",
"History": [
{
"amount": "1",
"contactNo": "-",
"email": "i2@mail.com"
},
{
"amount": "5",
"contactNo": "-",
"email": "i@gmail.com",
}
],
"size": "12"
}
完整历史记录数组,但只需要历史记录数组的第一个对象。
有人能指引我吗
谢谢。我认为这是不可能的,因为富查询是根据给定的选择器检索完整记录(键值对) 您可能需要重新考虑您的设计。例如,如果希望保存历史记录并从中查询,此方法可能会解决以下问题:
my_记录
李>
- 使用键
输入新值my_record
- 使用附加属性丰富旧值:
。在这些新属性的帮助下,可以通过查询创建索引和搜索李>{“DocType”:“my_history”,“time”:“789546”}
- PutState使用一个新键来丰富旧值
my_record
,不带任何新属性my_record
键将始终保持最新值。您可以通过使用索引(或不使用索引,取决于您的性能问题)查询具有任何分页/不分页属性的历史记录
这种方法也将是占用空间较少的方法。因为如果您在单个键上累积历史记录,则现有历史记录每次都将复制到下一个版本,这意味着您的每个条目都将使用
以前的大小+增量
,而不仅仅是增量好的,谢谢您的回复。但是我需要在一个数组中存储多个条目,并且只检索一个值。