我一直在嘗試在我的資料庫中查詢包含在用戶模型中的特定陣列元素,模式看起來有點像這樣:
const schemaUser = new mongoose.Schema({
username: { type: String, required: true, unique: true },
email: {type: String, unique: true},
password: { type: String, required: true},
accounts: [{
id : String,
account_name : String,
name : String,
password : String,
description: String
}]
});
我如何使用顯示的自定義 ID(不是 Mongodb 的)從“accounts”陣列中選擇一個特定的帳戶,該 ID 也包含在特定的用戶物件中?
干杯。
uj5u.com熱心網友回復:
如果要根據其 id 查詢包含特定帳戶的記錄,可以使用:
userSchema.findOne({ "accounts.id": { $eq: id }})
uj5u.com熱心網友回復:
由于您的問題圍繞基于陣列查找用戶,而不是查詢 mongoDB,因此您可以使用該array.find()方法根據id屬性回傳所需的物件。
更多關于array.find() 這里。
例子:
const accountList = [
{
id : 1,
account_name : 'account_one',
name : 'John Doe',
password : 'asdhui"#¤7aysdg',
description: 'dummy account #1'
},
{
id : 2,
account_name : 'account_two',
name : 'Jane Doe',
password : 'asdhui"#¤7aysdg',
description: 'dummy account #2'
},
{
id : 3,
account_name : 'account_three',
name : 'Derrick Johnson',
password : 'asdhui"#¤7aysdg',
description: 'dummy account #3'
}
];
console.log(accountList.find(account => account.id === 1));
請注意,該array.find()方法將只回傳第一個實體。如果您想進行其他型別的查找并根據不唯一的內容回傳用戶串列,則必須改用該array.filter()方法。
如果您確實要查詢 mongoDB,則可以通過指定所需的欄位,然后是$eq運算子和值來直接查詢特定檔案的欄位值。
例子:
userSchema.findOne({ "id": { $eq: value } })
value成為id您想要的用戶的具體資訊。
更多關于這里的$eq運營商。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/374690.html
標籤:javascript 数据库 MongoDB 猫鼬
