首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在指定大小的mongodb中查找句子的第一个单词

在指定大小的mongodb中查找句子的第一个单词
EN

Stack Overflow用户
提问于 2020-01-07 10:21:15
回答 4查看 617关注 0票数 1

我想从一个长度小于3 letters.Is的句子(短语)中找到第一个单词,我能找到吗?请建议一下。

我用过

代码语言:javascript
复制
 .map(function(st){return st.split(" ")[0];} 

函数,它给我数组format.But中所有的第一个单词,这不是预期的输出。

{“名称”:"VAS层养殖农场私有有限公司“}

{“名称”:"UTTARA肉鸡养殖场私营有限公司“}

{“名称”:"SAI REKHA家禽私人有限公司“}

{“名称”:"RUHITECH营养私人有限公司“}

{“名称”:"SADKAR肉鸡和农业农场私营有限公司“}

{“名称”:"SADAR家禽私人有限公司“}

从这个列表中,我需要输出只打印输出中的单词:("SAI","VAS")。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-01-07 13:27:13

您可以执行聚合查询。

代码语言:javascript
复制
db.collection.aggregate([
  {
    $project: {
      name: {
        $let: {
          vars: {
            first: {
              $arrayElemAt: [
                {
                  $split: [
                    "$name",
                    " "
                  ]
                },
                0
              ]
            }
          },
          in: {
            $cond: [
              {
                $lte: [
                  {
                    $strLenCP: "$$first"
                  },
                  3
                ]
              },
              "$$first",
              ""
            ]
          }
        }
      }
    }
  },
  {
    $match: {
      name: {
        $ne: ""
      }
    }
  },
  {
    $group: {
      _id: null,
      name: {
        $push: "$name"
      }
    }
  }
])

MongoPlayground

票数 2
EN

Stack Overflow用户

发布于 2020-01-07 10:39:03

根据我从你的问题中了解到的,你可能在寻找这个:

输入

代码语言:javascript
复制
var arr = [{ "name" : "VAS LAYER BREEDER FARM PRIVATE LIMITED" },
{ "name" : "UTTARA BROILER BREEDER FARM PRIVATE LIMITED" },
{ "name" : "SAI REKHA POULTRY FARMS PRIVATE LIMITED" }
]

代码语言:javascript
复制
var outputArr = [];
for(let j=0; j<arr.length; j++){
    var chars = arr[j].name.split(' ');    
    for(let i=0; i<chars.length; i++){
        if(chars[i].length <= 3){
            outputArr.push(chars[i]);
            break;    
        }
    };
}

输出

代码语言:javascript
复制
outputArr [ 'VAS', 'SAI' ]
票数 0
EN

Stack Overflow用户

发布于 2020-01-08 04:13:11

下面的mongo查询将打印少于三个字符的所有单词。

代码语言:javascript
复制
db.test.find().forEach( doc => {
    let words = doc.name.split(" ");
    for ( let word of words ) {
        if ( word.length < 3 ) {
            print( word );
            break;
        }
    }
} )

查询将打印字符"&“。

如果希望查询打印小于或等于三个字符的单词,请将代码word.length < 3更改为word.length <= 3。这将打印"&“、"SAI”和"VAS“。

如果希望查询只打印字母单词(A到Z和a到z),请将( word.length < 3 )更改为( word.length <= 3 && word.match("^[A-Za-z]+$") )。这将打印"SAI“和"VAS”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59626460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档