sql >> データベース >  >> NoSQL >> MongoDB

マングースインデックスはすでにさまざまなオプションで存在しています

    テキストインデックスが定義されているフィールドを確認してください。現在、mongodbはコレクションごとに1つのテキストインデックスのみを許可しています。したがって、desc列にテキストインデックスを定義し、そのインデックスを他の列で使用しようとすると、このエラーが発生します。

    インデックスをクエリして、作成した列を確認できますか。インデックスを取得するには、次のことができます

    db.collection.getIndexes()
    

    そしてそれはこのようなものを返します

    [
        {
            "v" : 1,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_",
            "ns" : "some.ns"
        },
        {
            "v" : 1,
            "key" : {
                "_fts" : "text",
                "_ftsx" : 1
            },
            "name" : "desc_text",
            "ns" : "some.ns",
            "weights" : {
                "title" : 1
            },
            "default_language" : "english",
            "language_override" : "language",
            "textIndexVersion" : 2
        }
    ]
    

    他の列でもスコープを設定してこのインデックスを使用する場合は、このインデックスを削除するだけです

    db.collection.dropIndex('desc_text');
    

    次に、テキストインデックスでカバーするすべての列を含めて再作成します。

    db.collection.createIndex({
        title:'text;,
        body: 'text;,
        desc: 'text',
        ...... and so on
    });
    



    1. MongoでNOTINクエリを実行するにはどうすればよいですか?

    2. 純粋なRedisを使用して、パターンに一致する数百万のキーをアトミックに削除するにはどうすればよいですか?

    3. Ubuntu(Linux)にLampを使用してMongodbをインストールする

    4. ハイブリッドクラウド環境全体でのMongoDBの複製