Skip to content

Instantly share code, notes, and snippets.

@mstarkman
Created September 7, 2011 18:56
Show Gist options
  • Save mstarkman/1201392 to your computer and use it in GitHub Desktop.
Save mstarkman/1201392 to your computer and use it in GitHub Desktop.
mongoDB Many-to-Many Data Modeling
db.groups.insert({
"_id": ObjectId("4e54ed9f48dc5922c0094a42"),
"groupName": "mongoDB User",
"persons": [
ObjectId("4e54ed9f48dc5922c0094a43"),
ObjectId("4e54ed9f48dc5922c0094a40")
]
});
db.groups.insert({
"_id": ObjectId("4e54ed9f48dc5922c0094a41"),
"groupName": "mongoDB Administrator",
"persons": [
ObjectId("4e54ed9f48dc5922c0094a43")
]
});
db.person.ensureIndex({"groups": 1});
db.groups.ensureIndex({"persons": 1});
db.person.insert({
"_id": ObjectId("4e54ed9f48dc5922c0094a43"),
"firstName": "Joe",
"lastName": "Mongo",
"groups": [
ObjectId("4e54ed9f48dc5922c0094a42"),
ObjectId("4e54ed9f48dc5922c0094a41")
]
});
db.person.insert({
"_id": ObjectId("4e54ed9f48dc5922c0094a40"),
"firstName": "Sally",
"lastName": "Mongo",
"groups": [
ObjectId("4e54ed9f48dc5922c0094a42")
]
});
// Get all persons in the "mongoDB User" group
db.person.find({"groups": ObjectId("4e54ed9f48dc5922c0094a42")});
// Get all persons in the "mongoDB Administrator" group
db.person.find({"groups": ObjectId("4e54ed9f48dc5922c0094a41")});
// Get all groups for "Joe Mongo"
db.groups.find({"persons": ObjectId("4e54ed9f48dc5922c0094a43")});
// Get all groups for "Sally Mongo"
db.groups.find({"persons": ObjectId("4e54ed9f48dc5922c0094a40")});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment