gpt4 book ai didi

java - Mongodb查询: find if a map stored in mongo contains a specific value

转载 作者:行者123 更新时间:2023-12-01 04:52:44 25 4
gpt4 key购买 nike

我有一个 mongo 集合,如下:

    {
"id": "510aec8e8426e96c156a0946",
"name": "ABC",
"categoryToShardMap": null
},
{
"id": "510aecd284268e0f60e547a5",
"name": "XYZ",
"categoryToShardMap": {
"shoes": 1
},
{
"id": "510aecbd84268e0f60e547a4",
"name": "AAA",
"categoryToShardMap": {
"shoes": 3,
"jeans": 2
}

我将字段“categoryToShardMap”声明为:

    private HashMap<String, Long> categoryToShardMap;

我正在尝试创建一个 REST Api,如果有人提供 shardId,他应该取回包含它的 mongo 文档。例如:如果我传递 shardId = 3,我应该收到 mongo 文档:

    {
"id": "510aecbd84268e0f60e547a4",
"name": "AAA",
"categoryToShardMap": {
"shoes": 3,
"jeans": 2
}

我正在尝试使用java来做到这一点。但我不确定应该如何使用 mongotemplate 或 DBObject 查询它。有人可以向我指出一些关于如何查询 mongo 文档中存储的 map 是否包含指定值的示例吗?

最佳答案

您可以通过$ne运算符来完成此操作。只需检查该字段是否不为空即可。

这是一个如何使用 javadriver 实现此目的的示例。

new BasicDBObject("categoryToShardMap", new BasicDBObject("$ne", null));

或者您可以使用 $where 运算符来检查数组的长度。以下帖子对此进行了解释:

Query for documents where array size is greater than 1

如果您要在 map 中查找特定值,可以使用以下命令:

DBObject query = BasicDBObjectBuilder.start().add("categoryToShardMap.shoes", 3).get(); // query for getting the documents whose "categoryToShardMap" field contains shoes with value 3

关于java - Mongodb查询: find if a map stored in mongo contains a specific value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14683866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com