https://github.com/finnfiddle/mongo-fixture
Declaratively populate mongodb using json files with relationships intact.
https://github.com/finnfiddle/mongo-fixture
Last synced: 13 days ago
JSON representation
Declaratively populate mongodb using json files with relationships intact.
- Host: GitHub
- URL: https://github.com/finnfiddle/mongo-fixture
- Owner: finnfiddle
- License: mit
- Created: 2015-08-04T19:33:57.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2018-02-17T12:29:53.000Z (over 8 years ago)
- Last Synced: 2025-09-14T20:52:47.936Z (10 months ago)
- Language: JavaScript
- Homepage:
- Size: 11.7 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
Mongo Fixture (Unmaintained)
============================
Node module for populating a Mongo db using JSON.
Declaratively reference other documents in the same dataset to create relationships between them.
Install
-------
```
npm install --save-dev mongo-fixture
```
Usage
-----
```
fixture = require('mongo-fixture');
fixture('data.json', function(error){
if(err){
throw err;
}
});
```
Example JSON file
-----------------
```
[
{
"__collection": "User",
"username": "User A",
"age": 20,
"active": false,
"nonCollection": {
"propA": "A"
},
"plan": {
"__collection": "Plan",
"__ref": "1",
"name": "Plan A",
"price": 100,
"private": true,
"specialOffer": {
"__collection": "SpecialOffer",
"propX": "X"
},
"otherProp": {
"__collection": "OtherThing",
"propR": "R",
"__ref": "1"
}
}
},
{
"__collection": "User",
"username": "User B",
"age": 20,
"active": true,
"plan": {
"__collection": "Plan",
"__duplicate": "1"
}
},
{
"__collection": "User",
"username": "User C",
"age": 32,
"active": true,
"plan": {
"__collection": "Plan",
"__ref": "2",
"name": "Plan B",
"price": 200,
"private": false,
"specialOffer": {
"__collection": "SpecialOffer",
"propX": "Y"
},
"otherProp": {
"__collection": "OtherThing",
"__duplicate": "1"
}
}
},
{
"__collection": "User",
"username": "User D",
"age": 33,
"active": true,
"plan": {
"__collection": "Plan",
"__duplicate": "2"
}
}
]
```
Child Documents
---------------
Child documents are simple JSON objects with a `__collection` attribute.
The child objects become ObjectId references when the db is populated.
Eg:
```
{
"__collection": "ParentCollection",
child: {
"__collection": "ChildCollection",
"keyX": "valueX"
}
}
```
Becomes the following documents:
```
// ParentCollection Doc
{
child: ObjectId("55c0ade6b47164eb35a544a1")
}
// ChildCollection Doc
{
"keyX": "valueX"
}
```
Duplicates
----------
Children can belong to multiple parents using `__ref` and `__duplicate` attributes.
Defined a common child once and give it a unique `__ref` value of your choice.
Then in another parent object reference the child by specifying the `__duplicate` attribute and setting it to the value of the `__ref` of the original.
Eg:
```
[
{
"__collection": "ParentCollection",
"child": {
"__collection": "ChildCollection",
"_ref": "1",
"otherProp": "X"
}
},
{
"__collection": "ParentCollection",
"child": {
"__collection": "ChildCollection",
"_duplicate": "1"
}
}
]
```
NB: always specify the `__collection` attribute.
Testing
-------
```
npm test
```
Contributing
------------
Pull requests, check the current source code for style. Its in coffeescript. And cheers