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