Node.js mongoose文本搜索不返回结果
我试图在一个组合索引上创建一个简单的文本搜索 这是我的猫鼬模型:Node.js mongoose文本搜索不返回结果,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我试图在一个组合索引上创建一个简单的文本搜索 这是我的猫鼬模型: // models/user.js // load the things we need var mongoose = require('mongoose'); // define the schema for our user model var itemSchema = mongoose.Schema({ globalinfo : { ownerobjectid : Str
// models/user.js
// load the things we need
var mongoose = require('mongoose');
// define the schema for our user model
var itemSchema = mongoose.Schema({
globalinfo : {
ownerobjectid : String,
name : String,
desc : String,
startdate : Date,
enddate : Date,
price : Number,
status : String,
statuscss : String,
dateadded : Date,
locationline1 : String,
locationline2 : String,
locationline3 : String,
locationtown : String,
locationpostcode : String,
locationlatitude : Number,
locationlongitude : Number,
termsapprove : Boolean,
friendlyurl : String,
itemsearchinfo : String,
}
});
itemSchema.index(
{
"globalinfo.itemsearchinfo": "text",
"globalinfo.name": "text"
}
); // schema level
// create the model for users and expose it to our app
module.exports = mongoose.model('Item', itemSchema);
这是我的搜索查询:
Item.find(
{ $text : { $search : "item" } }
).exec(function(err, items) {
问题是查询总是不返回任何结果
我在模型中有一个文档:
{
"_id" : ObjectId("56781cb97ae92ff08b55d4f1"),
"globalinfo" : {
"friendlyurl" : "item-a",
"dateadded" : ISODate("2015-12-21T15:37:29.591Z"),
"itemsearchinfo" : "Woop lawn mower for rent!\nYou should use this space to describe the item in detail and make it appealing\nTo the renter write your stuff here.",
"statuscss" : "na",
"status" : "Not Available Yet",
"locationlongitude" : null,
"locationlatitude" : null,
"locationpostcode" : "test",
"locationtown" : "test",
"locationline3" : "",
"locationline2" : "",
"locationline1" : "test",
"termsapprove" : true,
"price" : 3,
"enddate" : ISODate("2015-12-31T00:00:00.000Z"),
"startdate" : ISODate("2015-12-23T00:00:00.000Z"),
"desc" : "\n <h3>woop Lawn Mower for Rent! </h3>\n <p>You should use this space to describe the item in detail and make it appealing to the renter <strong>Write your stuff here.</strong> \n </p>",
"name" : "item A",
"ownerobjectid" : "56781909155232b7871edb17"
},
"__v" : 0
}
您是否尝试过重新索引集合 蒙戈指挥部:
db.collection.reIndex();
问题在于我编制索引的方式。使用双引号不起作用:
itemSchema.index(
{
"globalinfo.itemsearchinfo": "text",
"globalinfo.name": "text"
}
); // schema level
但是,单引号可以:
itemSchema.index(
{
'globalinfo.itemsearchinfo': "text",
'globalinfo.name': "text"
}
); // schema level
我尝试重新索引它似乎要重新索引,但是搜索仍然没有返回任何结果。“db.items.getIndexes();”的输出是什么?我已经用db.items.getIndexes的输出更新了这个问题。谢谢你的帮助!!如果搜索“item A”而不是“item”,是否会得到结果?作为测试,是否可以将name key值移动或复制到文档的根目录中?重新索引集合并再次搜索?我想知道它是否与嵌套有关。你是不是被要求用这样的引号来引用关键的引用?ie:“globalinfo.itemsearchinfo”:“text”,“globalinfo.name”:“text”
itemSchema.index(
{
'globalinfo.itemsearchinfo': "text",
'globalinfo.name': "text"
}
); // schema level