代码之家  ›  专栏  ›  技术社区  ›  Muirik

使用MongoDB`$in`运算符转换和传入数字数组

  •  0
  • Muirik  · 技术社区  · 7 年前

    我要做的第一件事是接收字符串值(恰好代表数字),例如“1”、“2”等,并将它们转换为逗号分隔的数组。

    现在我需要筛选一个名为“responsibilitySequence”的属性。问题是,这个属性的值是“number”类型,而不是“string”。

    那么,我如何调整以下函数,以便Mongo将使用 $in 运算符,由数字组成,而不是字符串值?

      if (responsibilitySequence) {
        let arrResponsibilitySequence = [];
        arrResponsibilitySequence = responsibilitySequence.split(",");
        _.each(arrResponsibilitySequence, (l, key, c) => {
          arrResponsibilitySequence[key] = new RegExp(arrResponsibilitySequence[key], "i");
        });
        search.responsibilitySequence = {
          $in: arrResponsibilitySequence
        };
      }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Akrion    7 年前

    您可以映射这些值并将它们解析为 int

      if (responsibilitySequence) {
        let arrResponsibilitySequence = responsibilitySequence.split(",");
        search.responsibilitySequence = {
          $in: arrResponsibilitySequence.map(x => Number.parseInt(x)) // or just +x
        };
      }