【问题标题】:How to trim a value by a particular length and then apply lookUp in mongoDB如何按特定长度修剪值,然后在 mongoDB 中应用查找
【发布时间】:2021-11-04 08:38:20
【问题描述】:

我面临的主要问题是进行多文档连接。例如,当我尝试按客户对订单运行查询时,我找不到一种简单的方法将订单与客户 ID 上的客户连接起来,因为在订单对象中,客户 ID 已将 _user$ 附加到用户 ID 的开头而且我不知道如何在聚合管道中截断它。

例如;在订单对象中,客户定义为_p_customer:"_User$8qXjk40eOd" 但在用户表中,_id 仅为 8qXjk40eOd,因此图表中的默认查找函数无法匹配两者。

注意:我使用的是解析服务器,它以上述方式存储指针。

This is how the data is being stored in the mongoDB order collection.

上图中的客户字段是指向_User集合的指针

This is how the data is stored in the mongoDB _User collection.

我的要求是编写查找所有用户及其相关订单计数的 mongo 查询。我无法做到这一点,因为我不知道如何从订单行中删除 _User$ 并通过 _id 将其加入 _User。

【问题讨论】:

  • 请提供样本数据和您预期的输出数据
  • 请查看示例数据。谢谢@mohammadNaimi

标签: mongodb nosql lookup aggregation mongodb-charts


【解决方案1】:

在聚合substr 查找之前要在$lookup 中使用的字段

db.collection.aggregate([
{
   $addFields :{
       nUser : { $substr: [ "$_p_customer", 6, -1 ] } // _User$ has 6 characters
   }
},
{
   $lookup :{
       from:"usersCollection",
       localField:"nUser",
       foreignField : "_id",
       as : "UserObject"
   }
}
])

【讨论】:

  • 感谢 Mohammad Naimi .. 这对我有用,并且也将数据传递给了 mongo 图表。
猜你喜欢
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
相关资源
最近更新 更多