我需要找到文本/字符串中的所有文档值:
示例:
想象一下,我有标签集合,其中包含以下文档:
db.tag.find()
{ "_id" : ObjectId("536f7107c55b2acc61000bc8"), "name" : "star" }
{ "_id" : ObjectId("536f710fc55b2acc61000bc9"), "name" : "star wars" }
{ "_id" : ObjectId("536f7117c55b2acc61000bca"), "name" : "spider" }
{ "_id" : ObjectId("537087d16ac5b5f6f58f0b1b"), "name" : "starting" }
我需要这样的东西(mongodb shell中的例子):
db.tag.find({"name": { $subStrOF: "star wars episode VII" }})
returning this:
{ "_id" : ObjectId("536f7107c55b2acc61000bc8"), "name" : "star" }
{ "_id" : ObjectId("536f710fc55b2acc61000bc9"), "name" : "star wars" }
有什么想法吗?
非常感谢
答案 0 :(得分:0)
首先,使用命令行选项启动mongod进程
--setParameter textSearchEnabled=true
示例:
mongod --setParameter textSearchEnabled=true
然后在你的mongo shell中,为标签集合中的name创建一个索引
db.tag.ensureIndex({name : "text"});
现在您可以使用文本进行查询:
db.tag.runCommand("text", {search : "star wars episode"});
这将返回类似这样的内容
{
"queryDebugString" : "star||||||",
"language" : "english",
"results" : [
{
"score" : 1.1,
"obj" : {
"_id" : ObjectId("536f7107c55b2acc61000bc8"),
"name" : "star"
}
},
{
"score" : 0.75,
"obj" : {
"_id" : ObjectId("536f710fc55b2acc61000bc9"),
"name" : "star wars"
}
}
],
"stats" : {
"nscanned" : 2,
"nscannedObjects" : 0,
"n" : 2,
"nfound" : 2,
"timeMicros" : 152
},
"ok" : 1
}
仅获得结果:
db.tag.runCommand("text", {search : "star wars episode"}).results
我已经使用我的本地数据库进行了测试,它运行正常。请检查
有关文字的详细信息: Mongo DOCs
来自mongoDB 2.6的BTW:DOCS
db.tag.find({$text : {$search : "star wars episode VII"}});
答案 1 :(得分:0)
我使用$ where工作,例如:
命令:
db.tag.find({$where:"'star wars episode VII'.search("star") >= 0"})
输出:
{ "_id" : ObjectId("536f7107c55b2acc61000bc8"), "name" : "star" }
{ "_id" : ObjectId("536f710fc55b2acc61000bc9"), "name" : "star wars" }
希望有所帮助