Java MongoDB Filter记录查询结果错误数据

时间:2017-10-28 12:21:16

标签: java mongodb swing

我在教程documentation之后一直在做一些MongoDB编码。我已经制作了一个带有组合框的表单来获取某个记录项并单击一个按钮来显示所有类似的记录。虽然它工作正常,但结果远非准确。

这是我的Mongo文档结构;

// collection: Records
{
    "_id" : ObjectId("59f46f75835301421ee36111"),
    "Asset Type" : "Furniture",
    "Room Number" : "01",
    "Barcode" : "55454",
    "Item Description" : "Des",
    "Acqusition Date" : "10/28/2017",
    "Value" : "2100"
}

我按房间号过滤。这是我的代码;

    JComboBox comboBox = new JComboBox();
        comboBox.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                comboSelected = (String) comboBox.getSelectedItem();
                System.out.println(comboSelected);
            }
        });

    JButton btnG = new JButton("Get Data");
    btnG.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
              String str2 = comboSelected;
              System.out.println(str2);
              // Below Method is to get all room data on selected room
              Block<Document> roomBlock = new Block<Document>() {
                     @Override
                     public void apply(final Document document) {
                         System.out.println(document.toJson());
                         //textBlock.setText(document.toJson());
                         //str1 = new String (document.toJson());
                     }
                };

                collection.find(gt("Room Number", str2)).forEach(roomBlock);
        }
});

例如,如果我选择房间1,我将获得不相关的记录。

我做错了什么?有人可以帮忙吗? (TIA)

1 个答案:

答案 0 :(得分:0)

我使用了错误的过滤器&#34; gt&#34;

collection.find(gt("Room Number", str2)).forEach(roomBlock);

在浏览MongoDB的查询documentation之后,我发现我需要使用&#34; eq&#34;过滤我的结果。所以如果你遇到同样的问题,试试这个。

collection.find(eq("Room Number", str2)).forEach(roomBlock);