MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB $add

In MongoDB ist die Datei $add Aggregations-Pipeline-Operator fügt Werte zusammen. Solche Werte können Zahlen oder Zahlen und ein Datum sein.

Der $add Operator akzeptiert die Werte als Argumente. Die Argumente können beliebige gültige Ausdrücke sein, solange sie entweder in alle Zahlen oder in Zahlen und ein Datum aufgelöst werden.

Beispieldaten

Angenommen, wir haben eine Sammlung namens data mit folgenden Dokumenten:

{
	"_id" : 1,
	"a" : 100,
	"b" : 50,
	"c" : ISODate("2021-01-03T23:30:15.100Z")
}
{
	"_id" : 2,
	"a" : 20000,
	"b" : 15,
	"c" : ISODate("2019-12-08T04:00:20.112Z")
}
{
	"_id" : 3,
	"a" : 1700,
	"b" : 3,
	"c" : ISODate("2020-09-24T10:45:01.007Z")
}

Nummern hinzufügen

Wir können den $add verwenden -Operator, um den a hinzuzufügen und b Felder zusammen.

Beispiel:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       a: 1, 
       b: 1, 
       result: { 
         $add: [ "$a", "$b" ] } } 
         }
   ]
)

Ergebnis:

{ "a" : 100, "b" : 50, "result" : 150 }
{ "a" : 20000, "b" : 15, "result" : 20015 }
{ "a" : 1700, "b" : 3, "result" : 1703 }

Zahlen mit Datum hinzufügen

Wenn eines der Argumente ein Datum ist, werden die anderen Argumente als Millisekunden behandelt, die dem Datum hinzugefügt werden.

Beispiel:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       a: 1, 
       c: 1, 
       result: { 
         $add: [ "$a", "$c" ] } } 
         }
   ]
).pretty()

Ergebnis:

{
	"a" : 100,
	"c" : ISODate("2021-01-03T23:30:15.100Z"),
	"result" : ISODate("2021-01-03T23:30:15.200Z")
}
{
	"a" : 20000,
	"c" : ISODate("2019-12-08T04:00:20.112Z"),
	"result" : ISODate("2019-12-08T04:00:40.112Z")
}
{
	"a" : 1700,
	"c" : ISODate("2020-09-24T10:45:01.007Z"),
	"result" : ISODate("2020-09-24T10:45:02.707Z")
}

Wir können sehen, dass die numerischen Werte im a Feld wurden als Millisekunden zum c hinzugefügt Feld.

Weitere Argumente

Die vorherigen Beispiele addieren zwei Werte zusammen, aber Sie können bei Bedarf weitere hinzufügen.

Hier ist ein Beispiel für das Zusammenfügen aller drei Felder:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       a: 1, 
       b: 1,
       c: 1, 
       result: { 
         $add: [ "$a", "$b", "$c" ] } } 
         }
   ]
).pretty()

Ergebnis:

{
	"a" : 100,
	"b" : 50,
	"c" : ISODate("2021-01-03T23:30:15.100Z"),
	"result" : ISODate("2021-01-03T23:30:15.250Z")
}
{
	"a" : 20000,
	"b" : 15,
	"c" : ISODate("2019-12-08T04:00:20.112Z"),
	"result" : ISODate("2019-12-08T04:00:40.127Z")
}
{
	"a" : 1700,
	"b" : 3,
	"c" : ISODate("2020-09-24T10:45:01.007Z"),
	"result" : ISODate("2020-09-24T10:45:02.710Z")
}

Diesmal wurden beide Zahlen zum Datum hinzugefügt.

Nur ein Datum erlaubt

Obwohl Sie viele Ausdrücke zusammenfügen können, können Sie nur ein Datum einbeziehen. Das Übergeben mehrerer Datumsangaben führt zu einem Fehler.

Beispiel:

db.data.aggregate(
   [
     { $project: { 
       _id: 0,
       a: 1, 
       b: 1,
       c: 1, 
       result: { 
         $add: [ "$c", ISODate("2020-09-24T10:45:01.007Z") ] } } 
         }
   ]
).pretty()

Ergebnis:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "only one date allowed in an $add expression",
	"code" : 16612,
	"codeName" : "Location16612"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

Keine Argumente übergeben

Keine Argumente an $add übergeben ergibt 0 zurückgegeben.

Beispiel:

db.data.aggregate(
   [
     { $project: { 
       result: { 
         $add: [  ] } } 
         }
   ]
)

Ergebnis:

{ "_id" : 1, "result" : 0 }
{ "_id" : 2, "result" : 0 }
{ "_id" : 3, "result" : 0 }

Übergabe von Nullwerten

Übergabe von null ergibt null .

Beispiel:

db.data.aggregate(
   [
     { $project: { 
       result: { 
         $add: [ null ] } } 
         }
   ]
)

Ergebnis:

{ "_id" : 1, "result" : null }
{ "_id" : 2, "result" : null }
{ "_id" : 3, "result" : null }