簡體   English   中英

如何查詢數組字段至少有一個屬性等於'X'的對象元素的所有文檔?

[英]How to query all documents where array field have at least one object-element with property equal 'X'?

我有一些像這樣的 MongoDB 文件:

{
"group": "P32666",
"order": [{
    "_id": {
        "$oid": "5e8e9b40e7999f6b90fd88bf"
    },
    "name": "Dmitriy A",
    "login": "example",
    "password": "example",
    "email": "example",
    "level": "user",
    "uuid": "b6a19744-bb20-4d39-9e1e-0ca5b464f890"
}, {
    "_id": {
        "$oid": "5e8ea03f5a21c26b90983de4"
    },
    "name": "Dmitriy B",
    "login": "example",
    "password": "example",
    "email": "example",
    "level": "user",
    "uuid": "556924c3-605c-44cc-8a26-d32f58222e89"
}, {
    "_id": {
        "$oid": "5e8ea0645a21c26b90983de5"
    },
    "name": "Dmitriy C",
    "login": "example",
    "password": "example",
    "email": "example",
    "level": "user",
    "uuid": "aef00707-ef00-4ce9-918b-5cef17e7280b"
}]}

我在 Mongoose 中使用 Mongo 並且無法理解如何查詢字段(數組)“訂單”在其中字段中至少有一個 object 的所有文檔(如上),例如,“登錄”對“示例”。 我怎樣才能做到這一點?

我試過這樣的事情:

export async function getQueues(request: Request, response: Response) {
  const returningQueues = await queues.find({order: [login: request.params.login]});
  response.json(returningQueues);

但是 TypeScript 錯誤(56 個“用戶”類型的缺失屬性(主要是內部貓鼬),我存儲在一個數組中)說我的想法是錯誤的。

如果您在數組字段上只有一個條件,您可以簡單地執行以下操作:

queues.find({"order.login": request.params.login})

但是如果你有多個條件,你可以使用$elemMatch

queues.find({
  order: { $elemMatch: { login: request.params.login, name: request.params.name } } 
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM