在指定大小的 mongodb 中查找句子的第一个单词
To find first word of a sentence in mongodb of specified size
我想从小于 3 的句子(短语)中找到第一个单词 letters.Is 有什么办法可以找到它吗?请提出建议。
我用过
.map(function(st){return st.split(" ")[0];}
函数它给了我数组中的所有第一个单词format.But这不是预期的输出。
{ "name" : "VAS LAYER BREED FARM PRIVATE LIMITED" }
{ "name" : "UTTARA BROILER BREED FARM PRIVATE LTD" }
{ "name" : "SAI REKHA POULTRY PRIVATE LTD" }
{ "name" : "RUHITECH NUTRITION PRIVATE LTD" }
{ "name" : "SADKAR BROILER AND AGRO FARMS PRIVATE LTD" }
{ "name" : "SADAR POULTRY PRIVATE LTD" }
从这个列表中,我需要输出仅打印输出中的单词:("SAI","VAS")。
根据我从你的问题中了解到的情况,你可能正在寻找这个:
输入
var arr = [{ "name" : "VAS LAYER BREEDER FARM PRIVATE LIMITED" },
{ "name" : "UTTARA BROILER BREEDER FARM PRIVATE LIMITED" },
{ "name" : "SAI REKHA POULTRY FARMS PRIVATE LIMITED" }
]
代码
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;
}
};
}
输出
outputArr [ 'VAS', 'SAI' ]
您可以进行聚合查询。
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"
}
}
}
])
下面的mongoshell查询将打印所有少于三个字符的单词。
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".
如果您想使用 javascript 进行管理(如您的示例代码所示)
// Your question suggests you need words less than 3 length, so you can write
.map((st)=> st.split(" ")[0]).filter((str)=> str.length < 3)
// Your expected output suggests you need words less than or equal to 3 length, so you can write
.map((st)=> st.split(" ")[0]).filter((str)=> str.length <= 3)
我想从小于 3 的句子(短语)中找到第一个单词 letters.Is 有什么办法可以找到它吗?请提出建议。
我用过
.map(function(st){return st.split(" ")[0];}
函数它给了我数组中的所有第一个单词format.But这不是预期的输出。
{ "name" : "VAS LAYER BREED FARM PRIVATE LIMITED" }
{ "name" : "UTTARA BROILER BREED FARM PRIVATE LTD" }
{ "name" : "SAI REKHA POULTRY PRIVATE LTD" }
{ "name" : "RUHITECH NUTRITION PRIVATE LTD" }
{ "name" : "SADKAR BROILER AND AGRO FARMS PRIVATE LTD" }
{ "name" : "SADAR POULTRY PRIVATE LTD" }
从这个列表中,我需要输出仅打印输出中的单词:("SAI","VAS")。
根据我从你的问题中了解到的情况,你可能正在寻找这个:
输入
var arr = [{ "name" : "VAS LAYER BREEDER FARM PRIVATE LIMITED" },
{ "name" : "UTTARA BROILER BREEDER FARM PRIVATE LIMITED" },
{ "name" : "SAI REKHA POULTRY FARMS PRIVATE LIMITED" }
]
代码
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;
}
};
}
输出
outputArr [ 'VAS', 'SAI' ]
您可以进行聚合查询。
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"
}
}
}
])
下面的mongoshell查询将打印所有少于三个字符的单词。
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".
如果您想使用 javascript 进行管理(如您的示例代码所示)
// Your question suggests you need words less than 3 length, so you can write
.map((st)=> st.split(" ")[0]).filter((str)=> str.length < 3)
// Your expected output suggests you need words less than or equal to 3 length, so you can write
.map((st)=> st.split(" ")[0]).filter((str)=> str.length <= 3)