[英]Mongoose search using numbers in $regex
I have a piece of code that I use to search values in my mongoose DB and I'm looking for a way to search numbers (like Order number or Service number etc), but I'm struggling to find a way to do this.我有一段代码用于在我的 mongoose 数据库中搜索值,我正在寻找一种方法来搜索数字(如订单号或服务号等),但我正在努力寻找一种方法来执行此操作。
My code:我的代码:
async getSearchOrders(params) {
const queryString = params.callParams.search;
const queryStrings = queryString.split(" ");
let allQueries = [];
queryStrings.forEach((element) => {
allQueries.push({ "company.name": { $regex: String(element), $options: "i" } });
allQueries.push({ "company.user.firstName": { $regex: String(element), $options: "i" } });
allQueries.push({ "company.user.lastName": { $regex: String(element), $options: "i" } });
allQueries.push({ "jobs.service.name": { $regex: String(element), $options: "i" } });
allQueries.push({ "jobs.reference": { $regex: String(element), $options: "i" } });
});
let dummyConsultants = [{ consultant: "Covert Blue" }, { consultant: "Sour Lemon" }, { consultant: "Sweet Peach" }, { consultant: "Till Lindeman" }, { consultant: "Jack Frost" }];
try {
let dbFilter = {};
let resultsData = await Orders.aggregate([
{ $match: { _active: true } },
{
$lookup: {
from: "companies",
localField: "company",
foreignField: "_id",
as: "company",
},
},
{ $unwind: "$company" },
{
$lookup: {
from: "users",
localField: "company.user",
foreignField: "_id",
as: "company.user",
},
},
{ $unwind: "$company.user" },
{
$lookup: {
from: "jobs",
localField: "jobs",
foreignField: "_id",
as: "jobs",
},
},
{ $unwind: "$jobs" },
{
$lookup: {
from: "services",
localField: "jobs.service",
foreignField: "_id",
as: "jobs.service",
},
},
{ $unwind: "$jobs.service" },
{
$match: { $or: allQueries },
},
{
$group: {
_id: "$_id",
root: { $mergeObjects: "$$ROOT" },
jobs: { $push: "$jobs" },
},
},
{
$replaceRoot: {
newRoot: {
$mergeObjects: ["$root", "$$ROOT"],
},
},
},
{
$project: {
root: 0,
},
},
]);
Here you can see I pass in jobs.reference which is a number and I'm not sure how to either convert the value I push into allQueries or modify what I push for it to work.在这里您可以看到我传入了 jobs.reference,这是一个数字,我不确定如何将我推送的值转换为 allQueries 或修改我推送的内容以使其工作。
You can use $toString before the query to convert numbers or ObjectId into strings.您可以在查询之前使用 $toString 将数字或 ObjectId 转换为字符串。
{$addFields: {order_number: { $toString: "$order_number" } }},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.