Skip to content

Instantly share code, notes, and snippets.

@gharriso
Created July 9, 2019 07:21
Show Gist options
  • Save gharriso/57a686d323da89dc479056732475bdba to your computer and use it in GitHub Desktop.
Save gharriso/57a686d323da89dc479056732475bdba to your computer and use it in GitHub Desktop.
//db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } );
use wildcard
db.noIndex.drop();
db.singleIndex.drop();
db.manyIndexes.drop();
db.wildcardIndex.drop();
var i = 0;
var docs = [];
for (i = 1; i < 100000; i++) {
var data = {
_id: i,
data: {
a: Math.round(Math.random() * 10000),
b: Math.round(Math.random() * 10000),
c: Math.round(Math.random() * 10000),
d: Math.round(Math.random() * 10000),
e: Math.round(Math.random() * 10000),
f: Math.round(Math.random() * 10000),
g: Math.round(Math.random() * 10000)
}
};
docs.push(data);
}
db.singleIndex.createIndex({"data.a":1});
db.manyIndexes.createIndex({"data.a":1});
db.manyIndexes.createIndex({"data.b":1});
db.manyIndexes.createIndex({"data.c":1});
db.manyIndexes.createIndex({"data.d":1});
db.manyIndexes.createIndex({"data.e":1});
db.manyIndexes.createIndex({"data.f":1});
db.manyIndexes.createIndex({"data.g":1});
db.wildcardIndex.createIndex({"data.$**":1});
function updateIt(collectionName) {
var start=new Date();
var rc=db.getCollection(collectionName).update({},
{$inc:{"data.a":1,"data.b":1,"data.c":1,"data.d":1,"data.e":1,"data.f":1,"data.g":1}},
{multi:true});
//printjson(rc);
var elapsed=((new Date())-start);
print('update,',collectionName,',',elapsed,'ms');
}
function insertIt(collectionName,data) {
var start=new Date();
var rc=db.getCollection(collectionName).insertMany(data);
//printjson(rc);
var elapsed=((new Date())-start);
print('insert,',collectionName,',',elapsed,',ms');
}
function deleteIt(collectionName) {
var start=new Date();
var rc=db.getCollection(collectionName).deleteMany({});
//printjson(rc);
var elapsed=((new Date())-start);
print('delete,',collectionName,',',elapsed,',ms');
}
function findIt(collectionName) {
var start=new Date();
var data=db.getCollection(collectionName).find({"data.a":{$lt:100}}).toArray();
//printjson(rc);
var count=data.length;
var elapsed=((new Date())-start);
print('find,',collectionName,',',elapsed,',ms,',count);
}
insertIt('noIndex',docs);
insertIt('singleIndex',docs);
insertIt('manyIndexes',docs);
insertIt('wildcardIndex',docs);
findIt('noIndex');
findIt('singleIndex');
findIt('manyIndexes');
findIt('wildcardIndex');
updateIt('noIndex');
updateIt('singleIndex');
updateIt('manyIndexes');
updateIt('wildcardIndex');
deleteIt('noIndex');
deleteIt('singleIndex');
deleteIt('manyIndexes');
deleteIt('wildcardIndex');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment