不带_id和特定字段的Mongodb Java驱动程序查询

时间:2019-02-20 12:35:18

标签: json mongodb projection mongo-java-driver

我正在尝试从mongodb集合中检索一个字段。 我的数据库的结构如下;

{ "_id" : "1", "username" : "", "password" : "!", "firm" : "SpringSource", "roles" : [ "admin", "client" ], "items" : [ { "_id" : "72d2ab6f-2f2a-4eb2-bb2a-86f0ee113e0a", "id" : "1", "title" : "Lugo", "price" : 10, "category" : "Coffee", "images" : "https://res.cloudinary.com/dznqctqoe/image/upload/v1550652877/ristretto-bianco.jpg", "description" : "Double shot with cream" }, { "_id" : "104ce91d-c80d-4c7f-a8e7-e1166ca945d8", "id" : "2", "title" : "Ristretto", "price" : 10, "category" : "Coffee", "images" : "https://res.cloudinary.com/dznqctqoe/image/upload/v1550652877/ristretto-bianco.jpg", "description" : "Double shot with milk" }, { "_id" : "3f7b52f5-133c-4a4c-b0b3-e22a97c32e5e", "id" : "3", "title" : "Black Tea", "price" : 5, "category" : "Tea", "images" : "https://res.cloudinary.com/dznqctqoe/image/upload/v1550652877/ristretto-bianco.jpg", "description" : "Black Tea" }, { "_id" : "17b9867a-9813-44b4-800d-323d04cc49ec", "id" : "4", "title" : "Green Tea", "price" : 7, "category" : "Tea", "images" : "https://res.cloudinary.com/dznqctqoe/image/upload/v1550652877/ristretto-bianco.jpg", "description" : "Green Tea" } ], "latitude" : "39.877619", "longitude" : "32.682537" }

所以我要获取的只是“ id”,“ title”,“ price”,“ category”,“ images”,“ description”字段。但是,通过投影方法,我得到了带有项目标签的_id字段如下;

[
{
    "items": [
        {
            "_id": "72d2ab6f-2f2a-4eb2-bb2a-86f0ee113e0a",
            "id": "1",
            "title": "Lugo",
            "price": 10,
            "category": "Coffee",
            "images": "https://res.cloudinary.com/dznqctqoe/image/upload/v1550652877/ristretto-bianco.jpg",
            "description": "Double shot with cream"
        },

我的Java代码是;

MongoDBSingleton mongoDB = MongoDBSingleton.getInstance();
MongoDatabase db = mongoDB.getDatabase();
BasicDBObject query= new BasicDBObject("_id","1");
//query.put("items",new BasicDBObject("$exists",true));


List<Document> results = db.getCollection("users").find(query).projection(fields(include("items","id","title","price","category","image","description"),exclude("_id")))
        .into(new ArrayList<Document>());

我在上面指出了我所需要的。没有Items标签,如何获得如下的JSON结果;

{
id: 2,
title: "Smartphone 2",
price: "173000",
category: "smartphones",
images: [
  "https://res.cloudinary.com/bogdan-fullstack-portfolio/image/upload/v1539481629/2.jpg"
],
description:
  "dimentum gravida. Ut euismod eleifend velit at rhoncus. Cras et odio eget enim luctus gravida. Mauris ultricies eros tristique, aliquet. "

},

0 个答案:

没有答案