如何使用java从Mongodb集合检索arraylist的元素?

如何使用java从Mongodb集合检索arraylist的元素?,java,database,mongodb,Java,Database,Mongodb,我有以下代码,我的目标是检索具有给定标记的文档 String myText = "It is the first #example and is very #important"; ArrayList<String> tags = textProcessor.getTags(myText); try { MongoClient mongo = new MongoClient("localhost", 27017); DB db =

我有以下代码,我的目标是检索具有给定标记的文档

String myText = "It is the first #example and is very #important";
ArrayList<String> tags = textProcessor.getTags(myText);

 try {
            MongoClient mongo = new MongoClient("localhost", 27017);
            DB db = mongo.getDB("myFirstDatabase");

            DBCollection table = db.getCollection("firstCollection");
            BasicDBObject document = new BasicDBObject();
            document.put("Text", myText);
            document.append("tags", tags);
            table.insert(document);

            /**** Find and display ****/
            BasicDBObject searchQuery = new BasicDBObject();
            searchQuery.put("tags", "#important");

            DBCursor cursor = table.find(searchQuery);

            while (cursor.hasNext()) {
                System.out.println(cursor.next());
            }
String myText=“这是第一个示例,非常重要”;
ArrayList tags=textProcessor.getTags(myText);
试一试{
MongoClient mongo=新的MongoClient(“本地主机”,27017);
DB=mongo.getDB(“myFirstDatabase”);
DBCollection table=db.getCollection(“firstCollection”);
BasicDBObject文档=新的BasicDBObject();
文件.put(“文本”,myText);
文件。附加(“标签”,标签);
表.插入(文件);
/****查找并显示****/
BasicDBObject searchQuery=新建BasicDBObject();
searchQuery.put(“标记”,“重要”);
DBCursor=table.find(searchQuery);
while(cursor.hasNext()){
System.out.println(cursor.next());
}
它不起作用,因为
标记
是一个数组,我正在数组中搜索
元素
。如何直接检索具有给定标记(在本例中为“重要”)的文档? 我知道我可以提取所有文档的所有标签,然后在一个循环中比较它们。但是我想直接这样做

同时,我对
mongodb
完全陌生。如果有更好的方法在数据库中插入标记(以便更容易检索),我将不胜感激


提前感谢,

Mongodb列表可以通过单个字符串查询很好,您应该检查textProcessor.getTags并检查Mongodb中的数据。我还建议您使用spring data Mongodb,因为它更简单、更容易学习。

如果您发现它使用单个字符串“重要”,它应该可以工作尽管标记在mongodb中是一个列表。你确定textProcessor.getTags是正确的吗?你能检查一下mongodb中的数据,它是否已经正确插入了吗?@NaFelixWimpyWijaya非常感谢。你是对的。我已经从标记的开头删除了#。它意味着searchQuery.put(“标记”,“重要”);是找到它的正确方法。你能写下你的评论作为答案,这样我就可以把它标记为正确答案吗?是的,另外,在mongodb中查询内部列表很好,而且工作速度很快,性能也很好。这是nosql中sql没有的最好功能之一。我已经发布了答案,谢谢!