var myCursor = db.bookshop.aggregate([]).pretty();
while (myCursor.hasNext()) {
var x = myCursor.next();
if(x.book)
print(tojson(x));
};
while (myCursor.hasNext()) {
var x = myCursor.next();
if(x.journal)
print(tojson(x));
};
while (myCursor.hasNext()) {
var x = myCursor.next();
if(x.musicCD)
print(tojson(x));
};
while (myCursor.hasNext()) {
var x = myCursor.next();
if(x.magazine)
print(tojson(x));
};
Для приведенного выше кода я пытаюсь найти количество каждой книги, журнала, музыкального диска и журнала. То есть, сколько раз каждый появляется в моем документе. Приведенный выше код может вернуть весь документ в хорошем формате. Как я могу найти количество каждого типа? (IE количество книг, количество журналов, количество musicCD и количество журналов). Обратите внимание, что мне нужно выполнить задачу, используя целое число над курсором!
пример вывода будет
number of books: 4
number of journals: 7
etc
удар - это файл js (он довольно большой) для всех, кто этого хочетдля справки.
db.bookshop.insert( {
"_id":"185.3.16",
"book": {
"callnum":"185.3.16",
"isbn":"1-292-06118-9",
"title":"Database Systems",
"authors":[
{
"fname":"Thomas",
"lname":"Connolly"},
{
"fname":"Carolyn",
"lname":"Begg"}
],
"publisher":"Pearson Pty Ltd",
"year":2015,
"price":136.99,
"topic":"Computer Science",
"description":"This is the 6th edition. You can register online to access the examples",
"keywords":["Database", "XML", "Distributed"]
}
});
db.bookshop.insert( {
"_id":"163.24.12",
"book": {
"callnum":"163.24.12",
"isbn":"1-123-456-810",
"title":"Core Java",
"authors":[
{
"fname":"Horstmann",
"lname":"Cornell"}
],
"publisher":"PH Pty Ltd",
"year":2012,
"price":142.90,
"topic":"Computer Science",
"description":"It covers JAVA programming and JAVA script",
"keywords":["JAVA", "XML", "Script"]
}
});
db.bookshop.insert( {
"_id":"123.45.67",
"book": {
"callnum":"123.45.67",
"isbn":"1-123-456-789",
"title":"Algorithms",
"authors":[
{
"fname":"James",
"lname":"Bond"},
{
"fname":"Harry",
"lname":"Potter"},
{
"fname":"William",
"lname":"Stallings"}
],
"publisher":"Pearson Pty Ltd",
"year":2013,
"price":65.85,
"topic":"Computer Science",
"description":"It contains algorithms and their applications. You can download examples from the website"
}
});
db.bookshop.insert( {
"_id":"134.41.33",
"book": {
"callnum":"134.41.33",
"isbn":"1-213-431-770",
"title":"C++ Programming",
"authors":[
{
"fname":"Larry",
"lname":"Peterson"}
],
"publisher":"Pearson Pty Ltd",
"year":2010,
"price":74.90,
"topic":"Computer Science",
"description":"C++ programming and its applications",
"keywords":["C++", "Class", "Overloading", "Inheritance"]
}
});
db.bookshop.insert( {
"_id":"214.56.82 12.23",
"journal": {
"callnum":"214.56.82",
"issn":"S-11-123-123-456",
"title":"Handyman",
"vol":12,
"issue":23,
"price":9.85,
"year":2017,
"month":"February"
}
});
db.bookshop.insert( {
"_id":"214.56.82 12.24",
"journal": {
"callnum":"214.56.82",
"issn":"S-11-123-123-456",
"title":"Handyman",
"vol":12,
"issue":24,
"price":9.85,
"year":2017,
"month":"August"
}
});
db.bookshop.insert( {
"_id":"214.56.82 12.25",
"journal": {
"callnum":"214.56.82",
"issn":"S-11-123-123-456",
"title":"Handyman",
"vol":12,
"issue":25,
"price":9.85,
"year":2017,
"month":"October"
}
});
db.bookshop.insert( {
"_id":"263.18.37 5.33",
"journal": {
"callnum":"263.18.37",
"issn":"D-10-123-124-456",
"title":"Information processing",
"vol":5,
"issue":33,
"price":15.90,
"year":2018,
"month":"January"
}
});
db.bookshop.insert( {
"_id":"263.18.37 5.34",
"journal": {
"callnum":"263.18.37",
"issn":"D-10-123-124-456",
"title":"Information processing",
"vol":5,
"issue":34,
"price":15.90,
"year":2018,
"month":"May"
}
});
db.bookshop.insert( {
"_id":"285.32.74 17.65",
"journal": {
"callnum":"285.32.74",
"issn":"C-9-123-456-666",
"title":"Mathmetics and Computing",
"vol":17,
"issue":65,
"price":35.90,
"year":2018,
"month":"December"
}
});
db.bookshop.insert( {
"_id":"285.32.74 17.66",
"journal": {
"callnum":"285.32.74",
"issn":"C-9-123-456-666",
"title":"Mathmetics and Computing",
"vol":17,
"issue":66,
"price":35.90,
"year":2019,
"month":"February"
}
});
db.bookshop.insert( {
"_id":"321.12.76",
"musicCD": {
"callnum":"321.12.76",
"title":"Music",
"producer":"ABC Pty Ltd",
"year":2010,
"category":"Pop",
"price":12.80
}
});
db.bookshop.insert( {
"_id":"342.22.42",
"musicCD": {
"callnum":"342.22.42",
"title":"Stars",
"producer":"BBC Pty Ltd",
"year":2012,
"category":"Classic",
"price":12.80
}
});
db.bookshop.insert( {
"_id":"332.17.25",
"musicCD": {
"callnum":"332.17.25",
"title":"Wiggle Wiggle",
"producer":"Wiggle Pty Ltd",
"year":2005,
"category":"Kids",
"price":10.50
}
});
db.bookshop.insert( {
"_id":"402.12.1",
"magazine": {
"callnum":"402.12.1",
"title":"ORACLE",
"publisher":"Julia McVeigh",
"topic":"Database",
"price":4.50,
"year":2017,
"month":"June",
"contents":[
{"event":[{"current":{"page":14}}, {"upcoming":{"page":15}}]},
{"columns":[
{"title":"Getting good service", "page":17, "author":"Jeff Spicer"},
{"title":"Behind Unbreakable", "page":19, "author":"Ken Jacobs"},
{"title":"Getting good", "page":21, "author":"Rich Niemiec"},
{"title":"Building and using portals", "page":25, "author":"Robert Hall"},
{"title":"Blocks, messages, rows", "page":29, "author":"Tom Kyte"}
]},
{"upfront":{
"Oracle monitor":{
"page":39,
"titles":["JDeveloper arrives", "Oracle and network", "Supply chain goes with flow"]
},
"Did you know":{"page":40},
"Share pool":{
"page":53,
"titles":["Systems expands content-management", "ArtinSoft automates migration to Java"]
}
} }
]
}
});
db.bookshop.insert( {
"_id":"402.12.2",
"magazine": {
"callnum":"402.12.2",
"title":"ORACLE",
"publisher":"Julia McVeigh",
"topic":"Database",
"price":4.50,
"year":2019,
"month":"July",
"contents":[
{"event":[{"current":{"page":9}}, {"upcoming":{"page":10}}]},
{"columns":[
{"title":"Making integration", "page":15, "author":"Jeff Spicer"},
{"title":"Oracle retrospective", "page":21, "author":"Rich Niemiec"},
{"title":"Stretching the Web", "page":27, "author":"Robert Hall"},
{"title":"Beyond Init.ora and SYS", "page":29, "author":"Tom Kyte"}
]},
{"upfront":{
"Oracle monitor":{
"page":39,
"titles":["Oracle information architecture", "Certifications debut at OpenWorld", "Big new for small business", "V-business on the horizon"]
},
"Did you know":{"page":40},
"Share pool":{
"page":47,
"titles":["Luminate. Net intelligent database management", "Unicenter supports Oracle", "SDA's Web database objects"]
}
} }
]
}
});