我想从同一单词的第一个单词大小为3而小于3个字母,第二个单词大小为5而小于5的句子(短语)中找到单词。有什么办法可以找到它?请提出建议。
下面是句子列表:
{ "name" : "VAS LAYER BREED FARM Pvt LIMITED" }
{ "name" : "UTTARA BROILER BREED FARM PRIVATE Limited" }
{ "name" : "SAI REKHA POULTRY PRIVATE LTD" }
{ "name" : "RUHITECH NUTRI PRIVATE LTD" }
{ "name" : "SADKAR BROILER AND AGRO FARMS PRIVATE LTD" }
{ "name" : "SADAR POULTRY PRIVATE LTD" }
预期输出:
["VAS","LAYER",
"SAI","REKHA"]
您可以尝试这个:
db.yourCollectionName.aggregate([{
$addFields: {
wordsArr: { $slice: [{ $split: ["$name", " "] }, 2] }
}
}, {
$addFields: {
lengths: {
$map: {
input: '$wordsArr',
as: "each",
in: { $strLenCP: "$$each" }
}
}
}
}, {
$project: {
name: 1,
wordsArr: {
$cond: [{ $and: [{ $lte: [{ $arrayElemAt: ["$lengths", 0] }, 3] }, { $lte: [{ $arrayElemAt: ["$lengths", 1] }, 5] }] }, "$wordsArr", []]
}
}
}, {
$match: { wordsArr: { $ne: [] } }
}])
收集数据:
/* 1 */
{
"_id" : ObjectId("5e16bd18c952870d7dfbb231"),
"name" : "VAS LAYER BREED FARM Pvt LIMITED"
}
/* 2 */
{
"_id" : ObjectId("5e16bd18c952870d7dfbb232"),
"name" : "UTTARA BROILER BREED FARM PRIVATE Limited"
}
/* 3 */
{
"_id" : ObjectId("5e16bd18c952870d7dfbb233"),
"name" : "SAI REKHA POULTRY PRIVATE LTD"
}
/* 4 */
{
"_id" : ObjectId("5e16bd18c952870d7dfbb234"),
"name" : "RUHITECH NUTRI PRIVATE LTD"
}
/* 5 */
{
"_id" : ObjectId("5e16bd18c952870d7dfbb235"),
"name" : "SADKAR BROILER AND AGRO FARMS PRIVATE LTD"
}
/* 6 */
{
"_id" : ObjectId("5e16bd18c952870d7dfbb236"),
"name" : "SADAR POULTRY PRIVATE LTD"
}
/* 7 */
{
"_id" : ObjectId("5e16c36f627ef782362cb9ca"),
"name" : "VAS "
}
/* 8 */
{
"_id" : ObjectId("5e16c37c627ef782362cbbcf"),
"name" : "VA LAYER BREED FARM Pvt LIMITED"
}
/* 9 */
{
"_id" : ObjectId("5e16c38a627ef782362cbd14"),
"name" : "VAS YER BREED FARM Pvt LIMITED"
}
结果:
/* 1 */
{
"_id" : ObjectId("5e16bd18c952870d7dfbb231"),
"name" : "VAS LAYER BREED FARM Pvt LIMITED",
"wordsArr" : [
"VAS",
"LAYER"
]
}
/* 2 */
{
"_id" : ObjectId("5e16bd18c952870d7dfbb233"),
"name" : "SAI REKHA POULTRY PRIVATE LTD",
"wordsArr" : [
"SAI",
"REKHA"
]
}
/* 3 */
{
"_id" : ObjectId("5e16c36f627ef782362cb9ca"),
"name" : "VAS ",
"wordsArr" : [
"VAS",
""
]
}
/* 4 */
{
"_id" : ObjectId("5e16c37c627ef782362cbbcf"),
"name" : "VA LAYER BREED FARM Pvt LIMITED",
"wordsArr" : [
"VA",
"LAYER"
]
}
/* 5 */
{
"_id" : ObjectId("5e16c38a627ef782362cbd14"),
"name" : "VAS YER BREED FARM Pvt LIMITED",
"wordsArr" : [
"VAS",
"YER"
]
}