如何解决删除文档嵌套数组中的每个元素如果它们与我的查询不匹配
我的数据库结构是这样的
{
rootField: "value",anotherRootField: "value1",products:[
{
productName: "p1_name",currencies: [
{
currencyName: "p1c1_name"
},{
currencyName: "p1c2_name"
}
]
},{
productName: "p2_name",currencies: [
{
currencyName: "p2c1_name"
},{
currencyName: "p2c2_name"
},]
},],ships: [
{
shipDate: "shipDate"
},...
]
}
由于某些原因,用户可以发送不同的查询,这意味着我不知道他们到底想要什么,而且他们可以搜索我文档的每个级别。
我的目标是处理查询并将结果作为Microsoft Excel文件返回。为此,如果它们与查询不匹配,我需要删除产品/货币/船。例如此查询:
{
productName: "p1_name",}
我需要这样的东西:
{
rootField: "value",{
currencyName: "p1c2_name"
}
]
}
]
}
或者如果搜索货币:
{
currencyName: "p2c1_name",}
我需要这个:
{
rootField: "value",products:[
{
productName: "p2_name",]
}
我很难理解聚合框架,这就是我正在从事的工作:
await Proforma.aggregate([
{ $match: { rootField: "value" } },// sample query
{ $unwind: "$products" },{ $match: { "products.productName": "p1_name" } },// sample query
{ $unwind: "$products.currencies" },{ $match: { "products.currencies.currencyName": "p1c1_name"}},// sample query
{ // back to array
$group: {
_id: { _id: "$_id",product__id: "$products._id" },currencies: { $push: "$products.currencies" },},{ // back to array
$group: {
_id: "$_id._id",products: {
$push: {
_id: "$id.product__id",currencies: "$currencies",]);
正如我所说,我的查询可能非常复杂,并且包含来自根,产品,货币和运输的多个字段,所以我不知道这是否适合我的情况,但是我当前的问题是我的 rootFields 从结果中忽略。我只想过滤嵌套字段并使rootFields保持不变。
而且我也不知道如何在此查询中添加船只
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。