我在我的items集合上创建了一个文本索引,如下所示:
db.items.createIndex({"$**":"text"})
执行此搜索:
db.items.find({ "PId" : null, $text : { $search : "Youu" } })
返回此文档:
{
"_id": ObjectId("59e7494fd28008300c727c73"),
"_t": "MongoItem",
"Props": {
"Identification\Display Name": "Test",
"Rainfall\Customer Identification\ Internal ": false,
"Rainfall\ Customer\ Financial Start Date ": NumberLong("77760000000000 "),
"Rainfall\ Customer\ Error Alarm Threshold ": NumberLong(12),
"Rainfall\ Customer\ Calculation Start Time ": NumberLong("636188256000000000 "),
"Rainfall\ Customer\ Time Zone ": 1,
"Identification\ Description ": "Youu "
},
"FId ": BinData(3, "a9Bg/nK2W0W90AKosCJvRw=="),
"PId": null,
"FName": "map sewer test",
"DatUpV": NumberLong(0),
"DatChV": NumberLong(0),
"DatUpChV": NumberLong(0),
"ChItV": NumberLong(0),
"PropV": NumberLong("636487544940502958")
}
这就是我所期望的。
但是,如果我将Identification \ Description属性更改为“You”并执行此搜索:
db.items.find({ "PId" : null, $text : { $search : "You" } })
我没有得到任何结果!由于我在没有文本部分的情况下进行了搜索并检查了条目,因此该属性肯定已设置为“您”。
我完全不知道为什么这不起作用。有什么想法吗?
由于 伊恩
答案 0 :(得分:0)
不确定您是否阅读了文档,但此处只是为了确保。
$text 它将在您的所有字段中搜索指定的文本。但它必须完全匹配。
使用您的搜索db.items.find({ "PId" : null, $text : { $search : "You" } })
,您只会找到一个文档,其中还有一个值为您的字段。 E.g。
{
"_id": ObjectId("59e7494fd28008300c727c73"),
"_t": "MongoItem",
"Props": {
"Identification\Display Name": "Test",
"Rainfall\Customer Identification\ Internal ": false,
"Rainfall\ Customer\ Financial Start Date ": NumberLong("77760000000000 "),
"Rainfall\ Customer\ Error Alarm Threshold ": NumberLong(12),
"Rainfall\ Customer\ Calculation Start Time ": NumberLong("636188256000000000 "),
"Rainfall\ Customer\ Time Zone ": 1,
"Identification\ Description ": "You "
},
"FId ": BinData(3, "a9Bg/nK2W0W90AKosCJvRw=="),
"PId": null,
"FName": "map sewer test",
"DatUpV": NumberLong(0),
"DatChV": NumberLong(0),
"DatUpChV": NumberLong(0),
"ChItV": NumberLong(0),
"PropV": NumberLong("636487544940502958")
}
您要搜索的内容是$regex。另一方面,使用$regex
,您必须搜索特定字段。
如果您想在这种情况下搜索特定字段
“Props.Identification \ Description”
然后你可以像这样搜索:
{ "Props.Identification\\ Description ": {$regex: /you/, $options: 'i'} }
这些选项不是必需的,但是如果你想要特定的选项,你可以添加它们,比如在这种情况下$options: 'i'
会使它不区分大小写。
否则你可以这样搜索:
{ "Props.Identification\\ Description ": {$regex: /You/} }