假设我有这个收藏夹:
{"str": ["pho", "goa"], ...},
{"str": ["sma", "aba"], ...},
{"str": ["gag"], ...}
...
我想选择所有文档,其中的字段(此处为str
)包含一个字符串,该字符串是某个单词的子字符串。例如smartphone
。因此查询结果应为:
{"str": ["pho", "goa"], ...},
{"str": ["sma", "aba"], ...}
我该怎么做?
此问题与#54279248有关,您不必在数组内搜索。
答案 0 :(得分:2)
您可以使用以下汇总:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<finalName>${name.project}</finalName>
<archive>
<manifest>
<mainClass>br.com.car.view</mainClass>
</manifest>
<manifestFile>${basedir}/META-INF/MANIFEST.MF</manifestFile>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
这个想法是,您可以利用$indexOfBytes来检查db.collection.aggregate([
{
$match: {
$expr: {
$anyElementTrue: {
$map: {
input: "$str",
as: "s",
in: { $ne: [ -1, { $indexOfBytes: [ "smartphone", "$$s" ] } ] }
}
}
}
}
}
])
中包含的str
中的字符串,然后只需要使用$anyElementTrue来检查条件"smartphone"
蒙哥游乐场here