猫鼬 Mongodb

Posted

技术标签:

【中文标题】猫鼬 Mongodb【英文标题】:Mongoose 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,用文本索引搜索不需要创建单独的字段,你标记正确的答案是不对的任何一个。不良信息超载!您可能应该重新开始。 可能是***.com/questions/28775051/…的欺骗 你可能是对的......我正在使用 mLabs。我启动了一个新的 mongo 服务器,一切都很好,至于旧的 mongo 服务器,我仍然无法实现所需的索引,所以我正在努力寻找答案。 【参考方案1】:

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

【讨论】:

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

感谢您的帮助。

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

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

再次感谢所有回答。

【讨论】:

以上是关于猫鼬 Mongodb的主要内容,如果未能解决你的问题,请参考以下文章

MongoDBMongodb——GridFS存储

mongoDBmongoDB副本集实战

MongoDBMongoDb数据结构

MongoDBmongodb设置用户访问权限

MongodbMongodb复制和分片

MongoDBMongoDB的安装教程