Coding With Fun
Home Docker Django Node.js Articles Python pip guide FAQ Policy

SDK Database Command, Aggregate Operator, Collection Operator


May 20, 2021 WeChat Mini Program Development Document


Table of contents


AggregateCommand .allElementsTrue(value: Expression []): Object

Support: Small program 2.7.4, cloud function 0.8.1, Web

The aggregate operator. E nter an array, or an expression for an array field. I f all elements in the array are true, true is returned, otherwise false is returned. The empty array returns true forever.

Parameters

value: Expression[]

[<expression>]

Returns a value

Object

API description

The syntax is as follows:

allElementsTrue([<expression>])

The sample code

Suppose the collection test has the following records:

{ "_id": 1, "array": [ true ] }
{ "_id": 2, "array": [ ] }
{ "_id": 3, "array": [ false ] }
{ "_id": 4, "array": [ true, false ] }
{ "_id": 5, "array": [ 0 ] }
{ "_id": 6, "array": [ "stark" ] }

The following code uses allElementsTrue() to determine whether the array field is true:

const $ = db.command.aggregate
db.collection('price')
  .aggregate()
  .project({
    isAllTrue: $.allElementsTrue(['$array'])
  })
  .end()

The results are as follows:

{ "_id": 1, "isAllTrue": true }
{ "_id": 2, "isAllTrue": true }
{ "_id": 3, "isAllTrue": false }
{ "_id": 4, "isAllTrue": false }
{ "_id": 5, "isAllTrue": false }
{ "_id": 6, "isAllTrue": true }

AggregateCommand.anyElementTrue(value: Expression[]): Object

Support: Small program 2.7.4, cloud function 0.8.1, Web

The aggregate operator. E nter an array, or an expression for an array field. I f any of the elements in the array are true, true is returned, otherwise false is returned. An empty array returns false forever.

Parameters

value: Expression[]

[<expression>]

Returns a value

Object

API description

The syntax is as follows:

anyElementTrue([<expression>])

The sample code

Suppose the collection test has the following records:

{ "_id": 1, "array": [ true ] }
{ "_id": 2, "array": [ ] }
{ "_id": 3, "array": [ false ] }
{ "_id": 4, "array": [ true, false ] }
{ "_id": 5, "array": [ 0 ] }
{ "_id": 6, "array": [ "stark" ] }

The following code uses anyElementTrue() to determine if the array field contains a true value:

const $ = db.command.aggregate
db.collection('price')
  .aggregate()
  .project({
    isAnyTrue: $.anyElementTrue(['$array'])
  })
  .end()

The results are as follows:

{ "_id": 1, "isAnyTrue": true }
{ "_id": 2, "isAnyTrue": false }
{ "_id": 3, "isAnyTrue": false }
{ "_id": 4, "isAnyTrue": true }
{ "_id": 5, "isAnyTrue": false }
{ "_id": 6, "isAnyTrue": true }

AggregateCommand.setDifference(value: Expression[]): Object

Support: Small program 2.7.4, cloud function 0.8.1, Web

The aggregate operator enters two collections, and the output exists only in the elements in the first collection.

Parameters

value: Expression[]

[<expression1>, <expression2>]

Returns a value

Object

API description

This is used in the following form:

setDifference([<expression1>, <expression2>])

The sample code

Suppose the collection test has the following data:

{ "_id": 1, "A": [ 1, 2 ], "B": [ 1, 2 ] }
{ "_id": 2, "A": [ 1, 2 ], "B": [ 2, 1, 2 ] }
{ "_id": 3, "A": [ 1, 2 ], "B": [ 1, 2, 3 ] }
{ "_id": 4, "A": [ 1, 2 ], "B": [ 3, 1 ] }
{ "_id": 5, "A": [ 1, 2 ], "B": [ ] }
{ "_id": 6, "A": [ 1, 2 ], "B": [ {}, [] ] }
{ "_id": 7, "A": [ ], "B": [ ] }
{ "_id": 8, "A": [ ], "B": [ 1 ] }

The following code uses setDifference to find numbers that exist only in B:

db.collection('test')
  .aggregate()
  .project({
    isBOnly: $.setDifference(['$B', '$A'])
  })
  .end()
{ "_id": 1, "isBOnly": [] }
{ "_id": 2, "isBOnly": [3] }
{ "_id": 3, "isBOnly": [3] }
{ "_id": 4, "isBOnly": [5] }
{ "_id": 5, "isBOnly": [] }
{ "_id": 6, "isBOnly": [{}, []] }
{ "_id": 7, "isBOnly": [] }
{ "_id": 8, "isBOnly": [1] }

AggregateCommand.setEquals(value: Expression[]): Object

Support: Small program 2.7.4, cloud function 0.8.1, Web

Aggregate operators, enter two collections, and determine whether the elements contained in the two collections are the same (no order, de-weighting).

Parameters

value: Expression[]

[<expression1>, <expression2>]

Returns a value

Object

API description

This is used in the following form:

setEquals([<expression1>, <expression2>])

The sample code

Suppose the collection test has the following data:

{ "_id": 1, "A": [ 1, 2 ], "B": [ 1, 2 ] }
{ "_id": 2, "A": [ 1, 2 ], "B": [ 2, 1, 2 ] }
{ "_id": 3, "A": [ 1, 2 ], "B": [ 1, 2, 3 ] }
{ "_id": 4, "A": [ 1, 2 ], "B": [ 3, 1 ] }
{ "_id": 5, "A": [ 1, 2 ], "B": [ ] }
{ "_id": 6, "A": [ 1, 2 ], "B": [ {}, [] ] }
{ "_id": 7, "A": [ ], "B": [ ] }
{ "_id": 8, "A": [ ], "B": [ 1 ] }

The following code uses setEquals to determine whether the elements contained in the two collections are the same:

db.collection('test')
  .aggregate()
  .project({
    sameElements: $.setEquals(['$A', '$B'])
  })
  .end()
{ "_id": 1, "sameElements": true }
{ "_id": 2, "sameElements": true }
{ "_id": 3, "sameElements": false }
{ "_id": 4, "sameElements": false }
{ "_id": 5, "sameElements": false }
{ "_id": 6, "sameElements": false }
{ "_id": 7, "sameElements": true }
{ "_id": 8, "sameElements": false }

AggregateCommand.setIntersection(value: Expression[]): Object

Support: Small program 2.7.4, cloud function 0.8.1, Web

Aggregate operators, enter two collections, and output the intersection of two collections.

Parameters

value: Expression[]

[<expression1>, <expression2>]

Returns a value

Object

API description

This is used in the following form:

setIntersection([<expression1>, <expression2>])

The sample code

Suppose the collection test has the following data:

{ "_id": 1, "A": [ 1, 2 ], "B": [ 1, 2 ] }
{ "_id": 2, "A": [ 1, 2 ], "B": [ 2, 1, 2 ] }
{ "_id": 3, "A": [ 1, 2 ], "B": [ 1, 2, 3 ] }
{ "_id": 4, "A": [ 1, 2 ], "B": [ 3, 1 ] }
{ "_id": 5, "A": [ 1, 2 ], "B": [ ] }
{ "_id": 6, "A": [ 1, 2 ], "B": [ {}, [] ] }
{ "_id": 7, "A": [ ], "B": [ ] }
{ "_id": 8, "A": [ ], "B": [ 1 ] }

The following code uses setIntersection to output the intersection of two collections:

db.collection('test')
  .aggregate()
  .project({
    commonToBoth: $.setIntersection(['$A', '$B'])
  })
  .end()

The output is as follows:

{ "_id": 1, "commonToBoth": [ 1, 2 ] }
{ "_id": 2, "commonToBoth": [ 1, 2 ] }
{ "_id": 3, "commonToBoth": [ 1, 2 ] }
{ "_id": 4, "commonToBoth": [ 1 ] }
{ "_id": 5, "commonToBoth": [ ] }
{ "_id": 6, "commonToBoth": [ ] }
{ "_id": 7, "commonToBoth": [ ] }
{ "_id": 8, "commonToBoth": [ ] }

AggregateCommand.setIsSubset(value: Expression[]): Object

Support: Small program 2.7.4, cloud function 0.8.1, Web

Aggregate operators, enter two collections, and determine whether the first collection is a subset of the second collection.

Parameters

value: Expression[]

[<expression1>, <expression2>]

Returns a value

Object

API description

This is used in the following form:

setIsSubset([<expression1>, <expression2>])

The sample code

Suppose the collection test has the following data:

{ "_id": 1, "A": [ 1, 2 ], "B": [ 1, 2 ] }
{ "_id": 2, "A": [ 1, 2 ], "B": [ 2, 1, 2 ] }
{ "_id": 3, "A": [ 1, 2 ], "B": [ 1, 2, 3 ] }
{ "_id": 4, "A": [ 1, 2 ], "B": [ 3, 1 ] }
{ "_id": 5, "A": [ 1, 2 ], "B": [ ] }
{ "_id": 6, "A": [ 1, 2 ], "B": [ {}, [] ] }
{ "_id": 7, "A": [ ], "B": [ ] }
{ "_id": 8, "A": [ ], "B": [ 1 ] }

The following code uses setIsSubset to determine whether the first collection is a subset of the second collection:

db.collection('test')
  .aggregate()
  .project({
    AisSubsetOfB: $.setIsSubset(['$A', '$B'])
  })
  .end()
{ "_id": 1, "AisSubsetOfB": true }
{ "_id": 2, "AisSubsetOfB": true }
{ "_id": 3, "AisSubsetOfB": true }
{ "_id": 4, "AisSubsetOfB": false }
{ "_id": 5, "AisSubsetOfB": false }
{ "_id": 6, "AisSubsetOfB": false }
{ "_id": 7, "AisSubsetOfB": true }
{ "_id": 8, "AisSubsetOfB": true }

AggregateCommand.setUnion(value: Expression[]): Object

Support: Small program 2.7.4, cloud function 0.8.1, Web

Aggregate operators, enter two collections, and output the contrase of two collections.

Parameters

value: Expression[]

[<expression1>, <expression2>]

Returns a value

Object

API description

This is used in the following form:

setUnion([<expression1>, <expression2>])

The sample code

Suppose the collection test has the following data:

{ "_id": 1, "A": [ 1, 2 ], "B": [ 1, 2 ] }
{ "_id": 2, "A": [ 1, 2 ], "B": [ 2, 1, 2 ] }
{ "_id": 3, "A": [ 1, 2 ], "B": [ 1, 2, 3 ] }
{ "_id": 4, "A": [ 1, 2 ], "B": [ 3, 1 ] }
{ "_id": 5, "A": [ 1, 2 ], "B": [ ] }
{ "_id": 6, "A": [ 1, 2 ], "B": [ {}, [] ] }
{ "_id": 7, "A": [ ], "B": [ ] }
{ "_id": 8, "A": [ ], "B": [ 1 ] }

The following code uses setUnion to output a union of two collections:

db.collection('test')
  .aggregate()
  .project({
    AB: $.setUnion(['$A', '$B'])
  })
  .end()

The output is as follows:

{ "_id": 1, "AB": [ 1, 2 ] }
{ "_id": 2, "AB": [ 1, 2 ] }
{ "_id": 3, "AB": [ 1, 2, 3 ] }
{ "_id": 4, "AB": [ 1, 2, 3 ] }
{ "_id": 5, "AB": [ 1, 2 ] }
{ "_id": 6, "AB": [ 1, 2, {}, [] ] }
{ "_id": 7, "AB": [ ] }
{ "_id": 8, "AB": [ 1 ] }