gpt4 book ai didi

java - 如何从mongo中的子文档中获取特定值

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:17 25 4
gpt4 key购买 nike

我想从 mongo 子文档中查找特定字段值,但它检索的是完整数据或空值。我正在使用 mongo 3.0.1 驱动程序。 mongo 特定驱动程序的语法是否有任何问题。
Json数据为:

    {
"Demo": {
"Demo Data": {
"Building": {
"A": 1,
"B": 2,
"C": 3,
"D": 4,

},
"Mode": "Building"
}
}
}

代码如下:

 DBCollection collection = db.getCollection("demo");
BasicDBObject field = new BasicDBObject();
BasicDBObject document = new BasicDBObject();
field1.put("_id", 0);
field1.put("Demo", 1);
DBCursor cursor = collection.find(document, field);
BasicDBObject object = new BasicDBObject();
BasicDBObject Mode = new BasicDBObject();
while (cursor.hasNext()) {
object = (BasicDBObject) cursor.next();
Mode.put("Mode", object.get(Mode));
System.out.println("Mode value is"+Mode);

}

但是使用上面的代码,输出显示为:

Mode value is {"Mode":null}

要求得到以下输出: {“模式”:“建筑”}

请具体说明哪里出了问题。感谢您的帮助。

最佳答案

我认为您错误地假设,既然您输入了 field1.put("Demo", 1); ,它就会返回您的内部文档,而无论如何它总是会返回您完整的文档,它会忽略其他字段,但即使如此,它也将是从根开始的完整文档。

while (cursor.hasNext()) {
object = (BasicDBObject) cursor.next();
Map map = object.toMap();
Mode.put("Mode", map.get("Demo").get("Demo Data").get("Mode")); //pre-check for NPE
System.out.println("Mode value is"+Mode);
}

关于java - 如何从mongo中的子文档中获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46763875/

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