如何在MongoDB中执行关键字查询

时间:2012-11-28 13:46:40

标签: mongodb nosql

这里我有一个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()执行精确搜索而不是关键字搜索。

3 个答案:

答案 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

  1. Book NameBook Description创建索引

    您需要使用Book Name,例如Book DescriptionTextdb.books.createIndex( { BookName: "text", BookDescription: "text" } )创建索引

  2. 现在只需通过db.books.find( { $text: { $search: "Programming" } } )

    查询您的文档

这可能会帮助您找到所有相关文档,其中包含Book NameBook Description中的编程关键字。