MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB $dodaj

W MongoDB $add Operator potoku agregacji dodaje wartości razem. Takie wartości mogą być liczbami lub liczbami i datą.

$add operator przyjmuje wartości jako argumenty. Argumenty mogą być dowolnymi poprawnymi wyrażeniami, o ile są rozstrzygane na wszystkie liczby lub na liczby i datę.

Przykładowe dane

Załóżmy, że mamy kolekcję o nazwie data z następującymi dokumentami:

{
	"_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")
}

Dodaj numery

Możemy użyć $add operator, aby dodać a i b pola razem.

Przykład:

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

Wynik:

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

Dodaj numery z datą

Jeśli jednym z argumentów jest data, pozostałe argumenty są traktowane jako milisekundy do dodania do daty.

Przykład:

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

Wynik:

{
	"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")
}

Widzimy, że wartości liczbowe w a pole zostało dodane w milisekundach do c pole.

Więcej argumentów

Poprzednie przykłady dodają dwie wartości razem, ale w razie potrzeby możesz dodać więcej.

Oto przykład połączenia wszystkich trzech pól:

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

Wynik:

{
	"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")
}

Tym razem oba numery zostały dodane do daty.

Dozwolona tylko jedna data

Chociaż możesz dodać wiele wyrażeń razem, możesz dołączyć tylko jedną datę. Przekazywanie wielu dat skutkuje błędem.

Przykład:

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

Wynik:

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

Przekazywanie żadnych argumentów

Przekazywanie żadnych argumentów do $add wyniki w 0 zostanie zwrócony.

Przykład:

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

Wynik:

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

Przekazywanie wartości zerowych

Przekazywanie null wyniki w null .

Przykład:

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

Wynik:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak wstawić HTML do Mongodb?

  2. MongoDB 'count()' działa bardzo wolno. Jak to udoskonalamy/obrabiamy?

  3. Mongoose, zaktualizuj wartości w tablicy obiektów

  4. MongoDb C# GeoNear Query Construction

  5. Mongoose findOneAndUpdate i runValidators nie działają