sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $log10

I MongoDB, $log10 aggregeringspipeline-operatören beräknar loggbasen 10 för ett tal och returnerar resultatet som en dubbel.

$log10 accepterar alla giltiga uttryck som löser sig till ett icke-negativt tal.

$log10 operatören introducerades i MongoDB 3.2.

Exempel

Anta att vi har en samling som heter test med följande dokument:

{ "_id" : 1, "data" : 0.5 }

Vi kan använda $log10 operatör för att returnera loggbasen 10 av data fält:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        result: { $log10: "$data" }
      }
    }
  ]
)

Resultat:

{ "result" : -0.3010299956639812 }

Värden utanför intervallet

Som nämnts, $log10 operatorn accepterar alla giltiga uttryck som löser sig till ett icke-negativt tal. Värden utanför det intervallet kommer att orsaka ett fel.

Anta att vi lägger till följande dokument i vår samling:

{ "_id" : 2, "data" : -3 }

Låt oss köra $log10 operatör mot det dokumentet:

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        result: { $log10: "$data" }
      }
    }
  ]
)

Resultat:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "$log10's argument must be a positive number, but is -3",
	"code" : 28761,
	"codeName" : "Location28761"
} : 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

Nullvärden

Nullvärden returnerar null när du använder $log10 operatör.

Anta att vi lägger till följande dokument i vår samling:

{ "_id" : 3, "data" : null }

Låt oss köra $log10 operatör mot det dokumentet:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $log10: "$data" }
      }
    }
  ]
)

Resultat:

{ "result" : null }

Vi kan se att resultatet är null .

NaN-värden

Om argumentet löser sig till NaN , $log10 returnerar NaN .

Exempel:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        result: { $log10: 1 * "$data" }
      }
    }
  ]
)

Resultat:

{ "result" : NaN }

Icke-existerande fält

Om $log10 operatorn tillämpas mot ett fält som inte finns, null returneras.

Exempel:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        result: { $log10: "$name" }
      }
    }
  ]
)

Resultat:

{ "result" : null }

  1. Cachar JSON-objekt på serversidan

  2. Om jag använder MongoDB som vår huvuddatabas, ska jag använda en separat grafdatabas för att implementera relationer mellan enheter?

  3. Cassandra vs. MongoDB

  4. Slaget om NoSQL-databaserna - Jämföra MongoDB &MSSQL:s NoSQL-funktioner