对新引入的字段进行索引和排序
我的文档结构如下:
{
"_id": "6ed3d427045228dce9e3b38d111cb046",
"_rev": "1-952bddae5572fbf2b0ce4a165c19c98b",
"type": "USER",
"name": "ABC",
"email": "[email protected]",
"phone": "024578963"
}
这是NodeJS应用,我正在使用couchdb-nano
。为了进行排序(例如获取用于分页的数据),我为上述字段(name
,email
,phone
)创建了一个索引。
已将一个名为created_date
的新字段引入文档,并且所有最新文档均包含created_date
,如下所示:
{ "_id": "6ed3d427045228dce9e3b38d111cb046", "_rev": "1-952bddae5572fbf2b0ce4a165c19c98b", "type": "USER", "name": "ABC", "email": "[email protected]", "phone": "024578963", "created_date": 1570528394252 }
因此,自某个时间以来所有最新文档都包含
created_date
,而旧文档在文档中没有created_date
字段。
[当我尝试按以下方式排序时:
const q = { selector : { type: { "$eq": "USER" }, }, fields : ['name', 'email', 'phone', 'created_date'], limit: 100, skip: 10, sort : [{"created_date":"asc"}] }; await prodresdb.find(q);
我将无法获得不包含
created_date
的旧文档。这是因为created_date
索引不会索引旧文档,因为那些旧文档没有created_date
字段。
我确信其他人也有这个问题,需要弄清楚...如何克服这个问题?有任何CouchDB方法可以解决此问题吗?此类问题的最佳实践是什么。
我的文档结构如下:{“ _id”:“ 6ed3d427045228dce9e3b38d111cb046”,“ _rev”:“ 1-952bddae5572fbf2b0ce4a165c19c98b”,“ type”:“ USER”,“ name”:“ ABC”,“ email”:“ [email protected]“,” ...
回答如下:我进行了一些测试,发现CouchDB
如果不包含_find中指定的字段(属性),则sort
结果中根本不包括文档。当将CouchDB
与PouchDB一起使用时,这尤其令人讨厌,因为后者包括了此类文档。
对新引入的字段进行索引和排序
我的文档结构如下:
{
"_id": "6ed3d427045228dce9e3b38d111cb046",
"_rev": "1-952bddae5572fbf2b0ce4a165c19c98b",
"type": "USER",
"name": "ABC",
"email": "[email protected]",
"phone": "024578963"
}
这是NodeJS应用,我正在使用couchdb-nano
。为了进行排序(例如获取用于分页的数据),我为上述字段(name
,email
,phone
)创建了一个索引。
已将一个名为created_date
的新字段引入文档,并且所有最新文档均包含created_date
,如下所示:
{ "_id": "6ed3d427045228dce9e3b38d111cb046", "_rev": "1-952bddae5572fbf2b0ce4a165c19c98b", "type": "USER", "name": "ABC", "email": "[email protected]", "phone": "024578963", "created_date": 1570528394252 }
因此,自某个时间以来所有最新文档都包含
created_date
,而旧文档在文档中没有created_date
字段。
[当我尝试按以下方式排序时:
const q = { selector : { type: { "$eq": "USER" }, }, fields : ['name', 'email', 'phone', 'created_date'], limit: 100, skip: 10, sort : [{"created_date":"asc"}] }; await prodresdb.find(q);
我将无法获得不包含
created_date
的旧文档。这是因为created_date
索引不会索引旧文档,因为那些旧文档没有created_date
字段。
我确信其他人也有这个问题,需要弄清楚...如何克服这个问题?有任何CouchDB方法可以解决此问题吗?此类问题的最佳实践是什么。
我的文档结构如下:{“ _id”:“ 6ed3d427045228dce9e3b38d111cb046”,“ _rev”:“ 1-952bddae5572fbf2b0ce4a165c19c98b”,“ type”:“ USER”,“ name”:“ ABC”,“ email”:“ [email protected]“,” ...
回答如下:我进行了一些测试,发现CouchDB
如果不包含_find中指定的字段(属性),则sort
结果中根本不包括文档。当将CouchDB
与PouchDB一起使用时,这尤其令人讨厌,因为后者包括了此类文档。