【问题标题】:Mongoose Mongodb猫鼬 Mongodb
【发布时间】:2017-10-08 12:43:11
【问题描述】:

提前致谢。 我有一个如下的猫鼬模式:

var bookSchema = new mongoose.Schema({
  name: { type: String, index: true, default: '' },
  text: { type: String, index: true, default: '' },
  date: { type: Date, default: Date.now },
  price: { type: Number, default: 0 } });

bookSchema.index({text: 1, name: 1}, {unique: true});

我的问题是当我在名为“text”的字段中搜索任何文本时,它都不起作用。可能是命名冲突,我是不是要把字段名改成文字以外的东西...

Book.find( { $text : { $search : 'mongoose is great' } } )...

【问题讨论】:

  • 你遇到了什么错误,你如何定义模型?
  • 我发现的一个大问题是我需要重新启动 MongoDB 服务器...(哦!)。我写了一个简短的函数 bookSchema.pre('save', function(next) { this.searchable = this.text + ' ' + this.name; next(); });将所有可搜索的内容包含在新字段中。
  • @Mendo 添加索引时不需要重启MongoDB,用文本索引搜索不需要创建单独的字段,你标记正确的答案是不对的任何一个。不良信息超载!您可能应该重新开始。
  • 你可能是对的......我正在使用 mLabs。我启动了一个新的 mongo 服务器,一切都很好,至于旧的 mongo 服务器,我仍然无法实现所需的索引,所以我正在努力寻找答案。

标签: mongodb mongoose


【解决方案1】:

text 是 MongoDB 中的保留字。不要用这个词,换个词试试。

【讨论】:

  • 这是不对的;使用名为“text”的字段没有任何问题。
【解决方案2】:

感谢您的帮助。

我遇到的问题是一个小而痛苦的教训。事实证明,我进入我的 mLabs 控制台并注意到该集合的索引总计超过 16 个! 所以删除了所有这些并添加了我需要的一个。结果很好,解决了我的问题。

所以我猜如果你继续添加索引而不删除之前的索引,你最终会得到不可预测的结果。

再次感谢所有回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-01
    • 2013-12-03
    • 2021-05-02
    • 2014-01-27
    • 2014-06-30
    • 2013-05-19
    • 1970-01-01
    • 2012-05-08
    相关资源
    最近更新 更多