我用的是反应本机和mongoDB针法。我的意图是,当我使用关键字运行查询时,结果应该与大多数匹配的关键字排序,
例如,如果我搜索Aqua,结果应该排序为
我找到了这方面的文档(https://docs.mongodb.com/manual/reference/operator/projection/meta/)
db.collection.find(
<query>,
{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )但无法找到如何为mongodb缝纫编写这段代码,
我试过
const query = {
name: {
$regex: searchKeyword,
$options: 'i',
//"$meta": "textScore"
},
score: { "$meta": "textScore" } // not sure where to put it , Saying unknown operator $meta
};
const options = {
"sort": { "score": { $meta: "textScore" }}
};
db.collection(itemNameDB).find( query, options).toArray()
.then(results => {
console.log(results)
})它破败地说‘未知操作员$meta’。在mongdb缝纫文档中没有找到任何例子。
有什么建议吗?
发布于 2020-01-20 22:56:54
它破败地说‘未知操作员$meta’。没有在mongodb缝纫文档中找到任何例子。
有几种方法可以做到这一点。其中一种方法是创建一个可以从应用程序调用的针法函数 (React)。在您的函数中,您可以调用db.collection.find()。例如:
exports = function(word){
var coll = context.services.get("mongodb-atlas").db("dbName").collection("collName");
var doc = coll.find(
{"$text": {"$search": word}},
{"score": {"$meta": "textScore"}}
).sort(
{"score":{"$meta":"textScore"}}
).toArray();
doc.forEach(element => console.log(JSON.stringify(element)));
return doc;
};上面的函数应该打印出与下面类似的内容,并以EJSON格式返回数组。
{"_id":"5e262bf99514bb2d81bb8735","item":"Aqua","score":1.1}
{"_id":"5e262c009514bb2d81bb8736","item":"Aquae","score":1}
{"_id":"5e262c109514bb2d81bb8739","item":"Aqua-water","score":0.75}https://stackoverflow.com/questions/59720472
复制相似问题