Vinnaren i pepparkakshustävlingen!
2021-01-18, 15:50
  #1
Medlem
grovalarks avatar
Hejsan, jag studerar just nu till Java-utvecklare, jag håller på lite med mongoDB.

Jag har valt att ta lite extra uppgifter, men jag har fastnat på några av dessa!

Jag har löst allihopa förutom nummer 12.

Hur grupperar jag efter färger och visar antal djur per färg?

Vi har inte gått igenom aggregering ännu, men jag misstänker att man måste använda det här, stämmer det?

Är tacksam för hjälp! Tack på förhand!


1.Skapa en databas vid namn animalsdb.
2.Gå till databasen animalsdb.
3.Skriv i mongo-skalet : load ("animals.js"). Vad gör den raden? Visa resultatet.
4.Hitta alla data från collection animals.
5.Hitta hur många djur det finns totalt i databasen animals?
6.Lägg till en array “favorit_food” med “blueberry, honey och ants” för “Bear” .
7.Ta bort ants och honey från arrayen “favorit_food” och “rounded ears” från arrayen “data” för “Bear”.
8.Hitta hur många gula djur det finns i kollektionen.
9.Hitta alla namnet på alla djur vars färg är brun och som lever i Asien och visa deras namn, color och found_in .
10.Lägg till fältet “litter_size” med värdet “4-6-kits” för “Fox”.
11.Lägg till ett fält med namn “likes meat” i arrayen “data” för alla med "order": "Carnivora" och som är gula till färgen.
12.Gruppera efter färger och visa antal djur per färg.
13.Skriv ut antalet djur som väger mer än 100.
Citera
2021-01-18, 16:04
  #2
Medlem
grovalarks avatar
Hade varit perfekt att få svar i exakt syntax, så jag förstår! Tack!
Citera
2021-01-18, 17:01
  #3
Medlem
JohannesSnajdares avatar
Nu postade du inget schema eller exempeldata så jag antog att fältet heter "color" och att varje dokument i kolektionen håller exakt ett djur.

Kod:
db.animals.aggregate([
    {
        "$group": {
            "_id": "$color",
            "count": {"$sum": 1}
        }
    }
])

/js
__________________
Senast redigerad av JohannesSnajdare 2021-01-18 kl. 17:04.
Citera
2021-01-21, 19:41
  #4
Medlem
grovalarks avatar
Citat:
Ursprungligen postat av JohannesSnajdare
Nu postade du inget schema eller exempeldata så jag antog att fältet heter "color" och att varje dokument i kolektionen håller exakt ett djur.

Kod:
db.animals.aggregate([
    {
        "$group": {
            "_id": "$color",
            "count": {"$sum": 1}
        }
    }
])

/js


Hmm, jag förstår inte riktigt hur detta skulle fungera! Men jag visar hur ett dokument ser ut så förstår du nog bättre!

"_id" : ObjectId("60030229a161e47252e77d01"),
"name" : "Black panther",
"class" : "Mammalia",
"order" : "Carnivora",
"family" : "Felidae",
"subfamily" : "Pantherinae",
"suborder" : "Feliformia",
"color" : "black",
"weight" : 60,
"data" : [
"are leopards in Asia and Africa",
"are black jaguars in the Americas",
"big cat"
]


Tack! Hoppas att du kan lösa detta
Citera
2021-01-22, 10:44
  #5
Medlem
JohannesSnajdares avatar
Ok, då borde mitt exempel funka tycker jag.
Har du provat?
Får du några fel?
Citera
2021-01-22, 14:02
  #6
Medlem
grovalarks avatar
Citat:
Ursprungligen postat av JohannesSnajdare
Ok, då borde mitt exempel funka tycker jag.
Har du provat?
Får du några fel?


Nu fungerade det!! Tack så hemskt mycket! Jag kör ju direkt i powershell, så jag delar inte upp raderna, men när jag bara använde din syntax med hjälp utav ctrl+c så funkade det perfekt!

Frågan är då, måste man dela upp raderna när man kör med aggregering?

{ "_id" : "grey", "count" : 3 }
{ "_id" : "black", "count" : 3 }
{ "_id" : "yellow", "count" : 2 }
{ "_id" : "brown", "count" : 5 }
{ "_id" : "gray", "count" : 1 }
{ "_id" : "orange", "count" : 2 }
>
Citera
2021-01-22, 14:32
  #7
Medlem
JohannesSnajdares avatar
Hur menar du "dela upp raderna"??

Har aldrig använt "powershell" så vet inte hur det ser ut där.
Antingen kör jag direkt från prompten med "mongo" eller så kör jag i Robo 3T (utmärkt Mongoshell, kan varmt rekommenderas).
Citera
2021-01-22, 15:32
  #8
Medlem
grovalarks avatar
Citat:
Ursprungligen postat av JohannesSnajdare
Hur menar du "dela upp raderna"??

Har aldrig använt "powershell" så vet inte hur det ser ut där.
Antingen kör jag direkt från prompten med "mongo" eller så kör jag i Robo 3T (utmärkt Mongoshell, kan varmt rekommenderas).

Jag kör mongo i powershell, det jag menar med hur jag skriver syntaxen är följande:

db.animals.aggregate([{"$group":{"_id": "$color", "count": {"$sum": 1}}}])

Men det är ju mycket lättare när man delar upp raderna så det ser ut som du visade:

db.animals.aggregate([
... {
... "$group": {
... "_id": "$color",
... "count": {"$sum": 1}
... }
... }


Men jag har aldrig delat upp raderna i powershell/mongoshell, hur gör man det ens? Trycker man enter så exekverar man koden ju. Det är därför det är så krångligt med just aggregering, blir rörigt!
Citera
2021-01-22, 16:30
  #9
Medlem
JohannesSnajdares avatar
Aha.
Har ingen aning om hur du matar in "flerradiga" kommandon i powershell, men här är en tråd om det. Verkar knöligt.

https://stackoverflow.com/questions/...i-line-command

Annars är tipset att tanka hem Robo 3T om du tänker pyssla mer med mongo, det är gratis för om du skippar deras "Studio"-version som de vill ha betalt för.

https://robomongo.org/download
Citera
2021-01-22, 17:15
  #10
Medlem
grovalarks avatar
Citat:
Ursprungligen postat av JohannesSnajdare
Aha.
Har ingen aning om hur du matar in "flerradiga" kommandon i powershell, men här är en tråd om det. Verkar knöligt.

https://stackoverflow.com/questions/...i-line-command

Annars är tipset att tanka hem Robo 3T om du tänker pyssla mer med mongo, det är gratis för om du skippar deras "Studio"-version som de vill ha betalt för.

https://robomongo.org/download

Det är ju bara att glömma det där med flerradiga kommandon i powershell.
Jag har sett att folk har använt andra program ja, jag ska ta mig en titt Jag tycker mongoDB är sjukt kul jämfört med SQL. Mongo känns så mycket mer logiskt. Får ångest av SQL.

Tur att mongoDB kom och visade mig ljuset i tunneln Tack för all hjälp! Du har varit kanon (Y)
Citera
2021-01-22, 17:26
  #11
Medlem
JohannesSnajdares avatar
Ingen orsak.

Testade lite i mongoshell på linux och där funkar flerradigheten by default om man avslutar raden med
ett ( { [ eller ,

Jag skrev exakt så här, rad för rad
(de tre punkterna ... markerar "ny rad" och skrivs ut av mongoshell)

Kod:
> db.animals.aggregate([
... {
... "$group": {
... "_id": "$color",
... "count": {
... "$sum": 1
... }
... }
... }
... ])
{ "_id" : "yellow", "count" : 1 }
{ "_id" : "grey", "count" : 1 }
{ "_id" : "black", "count" : 2 }
Citera
2021-01-22, 17:58
  #12
Medlem
grovalarks avatar
Citat:
Ursprungligen postat av JohannesSnajdare
Ingen orsak.

Testade lite i mongoshell på linux och där funkar flerradigheten by default om man avslutar raden med
ett ( { [ eller ,

Jag skrev exakt så här, rad för rad
(de tre punkterna ... markerar "ny rad" och skrivs ut av mongoshell)

Kod:
> db.animals.aggregate([
... {
... "$group": {
... "_id": "$color",
... "count": {
... "$sum": 1
... }
... }
... }
... ])
{ "_id" : "yellow", "count" : 1 }
{ "_id" : "grey", "count" : 1 }
{ "_id" : "black", "count" : 2 }


Jaha, det har jag fått upp många gånger. Då har jag bara tänkt att det är något fel i syntaxen, sen har jag bara tryckt enter 3 gånger så kommer man tillbaka till start-läget. Men det är alltså en ny rad då! Då vet man det också
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback