假设我有一些Schema,其中有一个像这样的虚拟字段
var schema = new mongoose.Schema(
{
name: { type: String }
},
{
toObject: { virtuals: true },
toJSON: { virtuals: true }
});
schema.virtual("name_length").get(function(){
return this.name.length;
});
在查询中是否可以按虚拟字段对结果进行排序?就像是
schema.find().sort("name_length").limit(5).exec(function(docs){ ... });
当我尝试此操作时,结果很简单,无法排序…
您将无法按虚拟字段进行排序,因为它们没有存储到数据库中。
虚拟属性是很方便使用的属性,但不会持久存在于mongodb中。
http://mongoosejs.com/docs/2.7.x/docs/virtuals.html
问题内容: 我正在尝试编写一个猫鼬查询,以检索一组资产以及这些资产的最新交易。交易与资产在单独的集合中。 为此,我首先在资产模型中创建了一个虚拟数组,以将资产链接到事务。 然后,我在node.js表达控制器中使用.populate进行查询(请注意,硬编码的“限制:1”有时会变成N): 在我的测试系统中有3个资产,每个资产都有一堆交易,它会为前两个资产返回旧交易,而对于第三个资产则不返回任何交易。
问题内容: 有一个字段’noticeBy’枚举(’email’,’mobile’,’all’,’auto’,’nothing’)NOT NULL默认’auto’。众所周知,按ENUM字段排序相对于其索引执行。但是,如何通过其值进行排序? 问题答案: 如“ 排序”中所述: 值根据其索引号排序,索引号取决于列规范中列出的枚举成员的顺序。例如,在for 之前排序。空字符串排在非空字符串之前,值排在所有其
问题内容: 我有一些带有名称字段的文档。我正在使用名称字段的分析版本进行搜索和排序。排序是在一个级别上进行的,即名称首先是按字母顺序排序的。但是在字母列表中,名称是按字典顺序而不是按字母顺序排序的。这是我使用的映射: 谁能提供相同的解决方案? 问题答案: 深入研究Elasticsearch文档,我偶然发现了这一点: 排序和排序规则 不区分大小写的排序 假设我们有三个用户文档,其名称字段分别包含Bo
每当文档更新时,mongo db都会对文档进行重新排序。我不希望这种情况发生,所以我发现使用order by_id可以以一致的顺序返回文档。但现在我无法分类。下面是我的查找查询,它查找特定用户创建的帖子,我正在尝试按_id.代码进行排序:
我想按字段存在对我的ES搜索结果进行排序,假设我得到了字段“价格”,并希望所有有价格的结果都在顶部,所有没有价格的结果都在底部。我知道你可以做一个简单的排序并添加“缺失”:“_last”,例如: {“sort”:[{price':{missing':'u last',order':'asc'}}]} 但在这种情况下,结果也将按价格排序,我不想要它。 没有脚本有办法做到吗?
问题内容: 我在Lucene 5.0中对字符串字段进行排序时遇到问题。显然,自Lucene 4更改以来,您可以进行排序的方式。下面显示了正在为我的文档建立索引的某些字段的摘要。 我想首先对相关性进行排序,这很好。我的问题是标题字段上的排序不起作用。我创建了一个排序域,在一系列方法调用之后,我试图将其与TopFieldCollector一起使用。 转到: 最后是应用排序字段的方法: 使用返回的收集器