java - 如何获取 mongoDB 中数组的特定元素?

标签 java mongodb jongo

我想获取数组的特定元素,并通过responsaveis.$ (daniela.morais@sofist.com.br) 但没有结果,我的语法有问题吗?

{
    "_id" : ObjectId("54fa059ce4b01b3e086c83e9"),
    "agencia" : "Abc",
    "instancia" : "dentsuaegis",
    "cliente" : "Samsung",
    "nomeCampanha" : "Serie A",
    "ativa" : true,
    "responsaveis" : [ 
        "daniela.morais@sofist.com.br", 
        "abc@sofist.com.br"
    ],
    "email" : "daniela.morais@sofist.com.br"
    }

语法1

mongoCollection.findAndModify("{'responsaveis.$' : #}", oldUser.get("email"))
                .with("{$set : {'responsaveis.$' : # }}", newUser.get("email"))
                .returnNew().as(BasicDBObject.class);

语法2

db.getCollection('validatag_campanhas').find({"responsaveis.$" : "daniela.morais@sofist.com.br"})

结果

Fetched 0 record(s) in 1ms

最佳答案

$ 位置运算符仅在 update(...) 或项目调用中使用,您不能使用它来返回数组中的位置。

正确的语法是:-

语法1

mongoCollection.findAndModify("{'responsaveis' : #}", oldUser.get("email"))
                .with("{$set : {'responsaveis.$' : # }}", newUser.get("email"))
                .returnNew().as(BasicDBObject.class);

语法2

db.getCollection('validatag_campanhas').find({"responsaveis" : "daniela.morais@sofist.com.br"})

如果只想投影特定元素,可以在投影中使用位置运算符$

{"responsaveis.$":1}

db.getCollection('validatag_campanhas').find({"responsaveis" : "daniela.morais@sofist.com.br"},{"responsaveis.$":1})

关于java - 如何获取 mongoDB 中数组的特定元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29705311/

相关文章:

java - Jsoup.connect(url).get() 仅返回一半的代码

java - 使用 Jongo 和 MongoDB 在 jackson 反序列化中将 ObjectId _id 重命名为 id

java - 使用 Jongo 使用 MongoDB 从 Person 集合中展开 $unwind 地址

mac终端javac帮助文档乱码

java - 如何告知比较使用的方法

java - 当我在 Java 中添加一个字符和一个字符串时会发生什么?

mongodb - 蒙戈 : Using $dayOfWeek in a $match clause when query has also a $groupy

python - 如何在 python 中为 db.collection.group() 编写 mongodb 查询

ruby-on-rails - MongoDB 中的受控数据分片

java - $avg 未返回平均值