我是 MongoDB 的新手。我在 MongoDB 中创建了一个集合并存储了以下内容
Q1UsefulStatementsList: [{
Q1UsefulStatement: "Useful Sentence"
Q1ActionsList: [{
Q1Verb: "Verb in the sentence"
Q1NP: "The Noun phrase"
Q1PP: "The Preposition phrase"
}]
}]
Q2UsefulStatementsList: [{
Q2UsefulStatement: "Useful Sentence"
Q2ActionsList: [{
Q2Verb: "Verb in the Sentence"
Q2NP: "The Noun phrase"
Q2PP: "The preposition Phrase"
}]
}]
我需要遍历这个集合并从 Q1UsefulStatementsList 和 Q2UsefulStatementsList 中获取所有动词。前任:
Q1UsefulStatementsList: [{
Q1UsefulStatement: "My dog also likes eating sausage"
Q1ActionsList: [{
Q1Verb: "likes"
Q1NP: "My dog"
Q1PP: "n / a"
}]
} {
Q1UsefulStatement: "The disabling of log helps"
Q1ActionsList: [{
Q1Verb: "disabling"
Q1NP: "disaabling of logs"
Q1PP: "of"
}]
}]
Q2UsefulStatementsList: [{
Q2UsefulStatement: "Log analysis failed"
Q2ActionsList: [{
Q2Verb: "failed"
Q2NP: "Log analysis"
Q2PP: "n / a"
}]
}]
当我运行 Q1UsefulStatementsList 时,我想获得“喜欢”和“禁用”作为输出。
我已经使用下面的代码进行了尝试。但是有没有更简单的方法在 MongoDB 中做这些事情?
我尝试使用像 (Q1UsefulStatementsList.Q1UsefulStatement) 这样的“点运算符”,但它给我的是一个完整的 BSON(JSON) 对象。我需要的是直接的实际个人价值观。
如果有的话,请建议任何更简单的方法。
我为提取值而编写的 Java 代码
if (object.get("Q1UsefulStatementsList") != null) {
BasicDBList qUseStatementList = (BasicDBList)(object.get("Q1UsefulStatementsList"));
for (Object qUsefulStatement: qUseStatementList) {
DBObject tmp = (DBObject) qUsefulStatement;
if (tmp.get("Q1ActionsList") != null) {
BasicDBList qActionsList = (BasicDBList) tmp.get("Q1ActionsList");
for (Object qVerbs: qActionsList) {
DBObject tmpQVerbs = (DBObject) qVerbs;
String verb = (tmpQVerbs.get("Q1Verb").toString());
String nP = (tmpQVerbs.get("Q1NP").toString());
String pP = (tmpQVerbs.get("Q1PP").toString());
}
}
}
}