gpt4 book ai didi

pouchdb - 如何使用 PouchDB-Find 获取特定数据(从数组中)

转载 作者:行者123 更新时间:2023-12-01 17:19:18 26 4
gpt4 key购买 nike

CouchDB 文档:

  "members": [
{
"name": "Mark",
"age": 35,
},
{
"name": "Bill",
"age": 32,
}
]

使用 PouchDB-Find 从 PouchDB 查询数据库:
  db.createIndex({
index: {fields: [
'_id',
'members.[].name'
]}
}).then(() => {
db.find({
'selector': {
'_id': { '$gt': null },
'members': {
'$elemMatch': {
'name': {'$eq': 'Bill'}
}
}
},
'fields': [
'members'
]
}).then((result) => {
console.log(result)
}).catch((err) => {
console.log(err)
})
})

我从上面的查询中得到的结果是整个成员数组。但是当我请求“姓名”为“比尔”而不是完整的数组时,我只需要获得以下内容。
{
"name": "Bill",
"age": 32,
}

我确实尝试了查询中的字段部分,但我无法找到应该提及的内容以获得我想要的内容。

最佳答案

一旦您的选择器选择了一个给定的文档,就只能在文档中指定一组索引独立(静态)字段用于 find 到 pick

Mango 查询是处理常见情况的简化语法,当您的索引和查询的结构不典型时,您需要使用 map/reduce
直接如文档中所示:

The map/reduce API is designed for cases that are too complex for Mango queries



因此,您对第一个 map/reduce 示例的更改如下所示:
function mapFun(doc) {
if (doc.members)
doc.members.forEach( function(m) {
emit(m.name, m); // key is name, value is the individual member Object
});
}.toString()
...
return db.query('index', {
key: 'Bill',
include_docs: false
});

要获得如下输出:
 {
"offset" : 0,
"rows": [{
"id": "somedoc",
"key": "Bill",
"value": {name:'Bill', age:32}
}],
"total_rows" : 1
}

关于pouchdb - 如何使用 PouchDB-Find 获取特定数据(从数组中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52532232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com