gpt4 book ai didi

couchdb - 通过 obj 数组的键索引 PouchDB 数据库

转载 作者:行者123 更新时间:2023-12-02 04:31:17 26 4
gpt4 key购买 nike

我在 PouchDB 中有这样的数据,大约有 200K 条这样的记录

{
"title": "blah blah blah",
"authors": [
{ "name": "Fudd, Elmer"},
{ "name": "Duck, D."},
{ "name": "Walker, Diana"},
{ "name": "Washington, Grg,"}
],
"description": "The annals"
}

我希望能够查询作者

db.find({
"selector": {
"authors.name": {
"$regex": "^Wa"
}
},
"fields": ["_id", "title", "authors"]
}, function (err, result) {
if (err) { return console.log(err); }

console.log(result);
});

问题是,我只是想不出如何为作者建立索引。我尝试了很多变体,包括

const docsByAuthorName = function(doc) {
for (let element of doc.creators) {
emit(element.name, element);
}
};

let idx = {
fields: [{
"name": { "map": docsByCreatorName }
}],
ddoc: "authors",
name: "name",
type: "json"
};

db.createIndex({
index: idx
}, function (err, result) {
if (err) { return console.log(err); }

console.log(result)
});

但我继续收到没有索引的消息,我应该为我的数据库建立索引以改进查询时间。我做错了什么?

更新:我在 secondary indexes 上发现了一篇帖子并按照那里的说明进行操作

let idx = {
_id: '_design/authorsByName',
views: {
'authorsByName': {
map: function(doc) {
for (let element of doc.creators) {
emit(element.name);
}
}
}
}
};

db.put(idx).then(function (info) {
// design doc created
}).catch(function (err) {
// if err.name === 'conflict', then
// design doc already exists
});

当我运行查询时,出现以下错误

SyntaxError: Unexpected token for
… <snip> …
The user's map/reduce function threw an uncaught error.
You can debug this error by doing:
myDatabase.on('error', function (err) { debugger; });
Please double-check your map/reduce function.
evalmachine.<anonymous>:34
};var log = function () {};var isArray = Array.isArray;var toJSON = JSON.parse;var __emitteds__ = [];var emit = function (key, value) {__emitteds__.push([key, value]);};var __result__ = (for (let element of doc.creators) {
^^^

所以,现在我不确定是否可以将常规 JS 放入 PouchDB map 函数中

最佳答案

在您更新的 map 函数中,进行以下更改:

//for (let element of doc.creators) {
for(var i=0, length=doc.creators.length; i<length; i++){
//emit(element.name);
emit(doc.creators[i], doc.title);
}

看看this answer还有this one .

关于couchdb - 通过 obj 数组的键索引 PouchDB 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48557000/

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