// Cannot implicitly shard accessed collections because of extra shard key index in sharded // collection. // @tags: [ // assumes_no_implicit_index_creation, // ] t = db.text_blogwild; t.drop(); t.save({_id: 1, title: "my blog post", text: "this is a new blog i am writing. yay eliot"}); t.save({_id: 2, title: "my 2nd post", text: "this is a new blog i am writing. yay"}); t.save({ _id: 3, title: "knives are Fun for writing eliot", text: "this is a new blog i am writing. yay" }); // default weight is 1 // specify weights if you want a field to be more meaningful t.createIndex({dummy: "text"}, {weights: "$**"}); // ensure listIndexes can handle a string-valued "weights" assert.eq(2, t.getIndexes().length); res = t.find({"$text": {"$search": "blog"}}); assert.eq(3, res.length(), "A1"); res = t.find({"$text": {"$search": "write"}}); assert.eq(3, res.length(), "B1"); // mixing t.dropIndex("dummy_text"); assert.eq(1, t.getIndexKeys().length, "C1"); t.createIndex({dummy: "text"}, {weights: {"$**": 1, title: 2}}); res = t.find({"$text": {"$search": "write"}}, {score: {"$meta": "textScore"}}).sort({ score: {"$meta": "textScore"} }); assert.eq(3, res.length(), "C2"); assert.eq(3, res[0]._id, "C3"); res = t.find({"$text": {"$search": "blog"}}, {score: {"$meta": "textScore"}}).sort({ score: {"$meta": "textScore"} }); assert.eq(3, res.length(), "D1"); assert.eq(1, res[0]._id, "D2"); res = t.find({"$text": {"$search": "eliot"}}, {score: {"$meta": "textScore"}}).sort({ score: {"$meta": "textScore"} }); assert.eq(2, res.length(), "E1"); assert.eq(3, res[0]._id, "E2");