mongodb 如何使用{ $text:{ $search:search } }在赛尔斯-蒙戈数据库内?

lbsnaicq  于 2023-01-04  发布在  Go
关注(0)|答案(3)|浏览(103)

我有一个sails-mongodb查询,它是

db('insights').find( { $text: { $search: search} } ).limit(limit).skip(offset).exec(function (err, insights) { ... }

其给予的误差为

{"name":"MongoError","message":"\"$search\" had the wrong type. Expected String, found RegEx","waitedMS":0,"ok":0

等效的Mongodb查询也可以工作。

var col = db.collection('insights');

          col.find( { $text: { $search: search } } ).skip(offset).limit(limit).toArray(function(err, items) { .. }

“search”的值示例为“\“jim"”,其中搜索项为{ $text:{ $search:“吉姆”}
传入$文本的正确方法是什么:$通过sails-mongodb搜索对象?

yzckvree

yzckvree1#

这里是一个你可以使用'contains'的例子,它可以用sails-mongo来完成
var musicCourses =等待课程.查找({ subject:{包含:'abc' } });

fbcarpbf

fbcarpbf2#

提供的答案不起作用。Sails-MongoDB不支持MongoDB内置的搜索构造。你最好使用来自父Sails数据库的本地Mongo管理器,然后使用描述中的本地Mongo查询。(我知道你已经离开了,但如果其他人也在寻找同样的东西)。

const db = sails.getDatastore().manager;
let result = await db.collection("insights").find( { $text: { $search: search } } ).skip(offset).limit(limit).toArray();
6ie5vjzr

6ie5vjzr3#

下面是我在sails 1.0中的实现方法:

const db = <modelName>.getDatastore().manager;
let rawCollection = db.collection(<modelname>.tableName);
let regex = new RegExp(query, "ig"); //Case insensitive + global

let result = await rawCollection
  .find(
    {
      search: regex,
    }).toArray();

相关问题