私のサンプルドキュメントは
{
"_id" : ObjectId("51f89c1484ae3aa758ad56e9"),
"group_name" : "Operator",
"privileges" : [
"Add Group",
"Edit/Delete Group",
"Add User",
"Edit/Delete User",
"Log History",
"Add Stopwords Group",
"Edit/Delete Stopwords Group",
"Add Stopwords",
"Edit/Delete Stopwords",
"Recomended Stopwords"
],
"users" : [
{
"full_name" : "operator1",
"user_name" : "operator",
"password" : "pass$123",
"status" : "Active"
},
{
"full_name" : "Sumit Dshpande",
"user_name" : "dsumit",
"password" : "pass$123",
"status" : "Active"
}
]
}
ユーザーが入力したユーザー配列の user_name と password を一致させようとしています。
私のJavaコードは次のとおりです。
BasicDBObject query = new BasicDBObject();
List<BasicDBObject> parts = new ArrayList<BasicDBObject>();
parts.add(new BasicDBObject("users.user_name", uname));
parts.add(new BasicDBObject("users.password", password));
query.put("$and", parts);
DBCursor cursor = collection.find(query);
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
しかし、一致する配列ですべてのユーザーを返します。グループ権限を変更できるように、グループの下にユーザーが必要です。nosqlでスキーマを設計するためのこの正しいアプローチはありますか。