这里我有一个BOOK集合:
Book Id:001
Book Name:C# step by step
Book Description:Programming book on C#
Book Id:002
Book Name:Head First Java
Book Description:Programming Book on Java
Book Id:003
Book Name:Steve Jobs
Book Description:biography of Jobs
我的问题是如何在图书描述中使用“编程”一词搜索所有书籍?
我是NoSQL的新手,目前我只能使用find()执行精确搜索而不是关键字搜索。
答案 0 :(得分:1)
您可以在find
的查询选择器中使用正则表达式来执行此操作:
db.books.find({description: /Programming/})
答案 1 :(得分:1)
该文档有一章关于Full Text Search in Mongo,建议将每个字符串拆分为单个单词的数组,以便您可以将其编入索引以便更快地查找。
{ Id:001,
Name:"C# step by step",
Description:"Programming book on C#",
Description_tags: [
"Programming",
"book",
"on",
"C#"]
}
db.books.ensureIndex({Description_tags:1});
db.books.find(Description_tags:"Programming");
如果速度不是问题而您想避免更改数据结构,则还可以使用regular expressions。但请记住,这会严重缩放:查找时间将与集合中的条目数呈线性关系。
db.collection.find( {description: { $regex: "Programming"} } );
答案 2 :(得分:0)
在mongoDB中找到使用关键字的方法有很多,其中我想使用Text-Search。
为Book Name
和Book Description
创建索引
您需要使用Book Name
,例如Book Description
为Text
和db.books.createIndex( { BookName: "text", BookDescription: "text" } )
创建索引
现在只需通过db.books.find( { $text: { $search: "Programming" } } )
这可能会帮助您找到所有相关文档,其中包含Book Name
和Book Description
中的编程关键字。