

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# \$1cmp
<a name="cmp"></a>

Amazon DocumentDB 中的`$cmp`運算子用於比較兩個值，並傳回整數值，指出其相對順序。這是一個比較運算子，可比較兩個表達式，並傳回 -1、0 或 1 的整數值，取決於第一個值是否分別小於、等於或大於第二個值。

**參數**
+ `expression1`：要比較的第一個表達式。
+ `expression2`：要比較的第二個表達式。

## 範例 (MongoDB Shell)
<a name="cmp-examples"></a>

下列範例示範運算`$cmp`子用來比較兩個數值的用量。

**建立範例文件**

```
db.collection.insertMany([
  { _id: 1, value1: 10, value2: 20 },
  { _id: 2, value1: 15, value2: 15 },
  { _id: 3, value1: 20, value2: 10 }
]);
```

**查詢範例**

```
db.collection.find({
  $expr: {
    $cmp: ["$value1", "$value2"]
  }
})
```

**輸出**

```
[
  { "_id" : 1, "value1" : 10, "value2" : 20 },
  { "_id" : 3, "value1" : 20, "value2" : 10 }
]
```

在此範例中，`$cmp`運算子會比較每個文件的 `value1`和 `value2` 欄位。結果為：

```
- `$cmp: ["$value1", "$value2"]` returns -1 for the first document (10 < 20), 0 for the second document (15 = 15), and 1 for the third document (20 > 10).
```

## 程式碼範例
<a name="cmp-code"></a>

若要檢視使用 `$cmp`命令的程式碼範例，請選擇您要使用的語言標籤：

------
#### [ Node.js ]

以下是在 Node.js 應用程式中搭配`mongodb`驅動程式使用 `$cmp` 運算子的範例：

```
const { MongoClient } = require('mongodb');

const client = new MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

async function main() {
  await client.connect();
  const db = client.db('test');
  const collection = db.collection('mycollection');

  // Insert sample documents
  await collection.insertMany([
    { _id: 1, value1: 10, value2: 20 },
    { _id: 2, value1: 15, value2: 15 },
    { _id: 3, value1: 20, value2: 10 }
  ]);

  // Query using $cmp operator
  const result = await collection.find({
    $expr: {
      $cmp: ['$value1', '$value2']
    }
  }).toArray();

  console.log(result);

  await client.close();
}

main();
```

------
#### [ Python ]

以下是在 Python 應用程式中搭配`pymongo`驅動程式使用 `$cmp` 運算子的範例：

```
from pymongo import MongoClient

client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client['test']
collection = db['mycollection']

# Insert sample documents
collection.insert_many([
    {'_id': 1, 'value1': 10, 'value2': 20},
    {'_id': 2, 'value1': 15, 'value2': 15},
    {'_id': 3, 'value1': 20, 'value2': 10}
])

# Query using $cmp operator
result = list(collection.find({
    '$expr': {
        '$cmp': ['$value1', '$value2']
    }
}))

print(result)

client.close()
```

Node.js 和 Python 範例的輸出將與 MongoDB Shell 範例相同：

```
[
  { "_id" : 1, "value1" : 10, "value2" : 20 },
  { "_id" : 2, "value1" : 15, "value2" : 15 },
  { "_id" : 3, "value1" : 20, "value2" : 10 }
]
```

------