使用MongoDB

时间:2019-01-22 12:04:02

标签: database mongodb nosql

假设我有这个收藏夹:

{"str": ["pho", "goa"], ...},
{"str": ["sma", "aba"], ...},
{"str": ["gag"], ...}
...

我想选择所有文档,其中的字段(此处为str)包含一个字符串,该字符串是某个单词的子字符串。例如smartphone。因此查询结果应为:

{"str": ["pho", "goa"], ...},
{"str": ["sma", "aba"], ...}

我该怎么做?

此问题与#54279248有关,您不必在数组内搜索。

1 个答案:

答案 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