我有這樣的檔案結構:
{
"_id": "",
"personalities": [
{
"personalName": "something",
"color":0,
"total":0,
"userId":""
}
]
}
我試圖用這種方法找到:
User.find({personalities:{
$$elemMatch:{
personalName:"something"
}
}})
.then(users => res.status(200).send(JSON.stringify(users)))
.catch(err => res.status(400).send(err))
編輯:代碼 {"personalities.personalName":"something"} 在 mongoDbCompass 上作業。

但是當我用貓鼬查詢時。它回傳所有檔案。
app.post("/users", (req, res) => {
User.find({"personalities.personalName":"something"})
.then(users => res.status(200).send(JSON.stringify(users.length)))
.catch(err => res.status(400).send(err))
})
但它回傳所有檔案(即使是 PersonalName 不等于“某物”的檔案)。我該如何解決?
我非常感謝您的幫助,并希望您度過愉快的一天!
uj5u.com熱心網友回復:
完美的方法是使用findById方法。只需傳遞用戶 ID 并獲取其所有相關詳細資訊,如下所示。
User.findById(userId).then(user=> //do something here).catch(err=> console.log(err)
但是,如果您沒有 Id,則可以通過使用findOne方法匹配用戶詳細資訊來獲取單個用戶。你可以在這里找到參考https://mongoosejs.com/docs/api.html#model_Model.findOne。
User.findOne({ personalName:"something" }).then(user=> //do something).catch(err=>console.log(err)
此外,有可能有多條記錄具有匹配的 where 子句,在這種情況下(更好),您應該使用find方法。它的作業原理如下。
// find all documents
await MyModel.find({});
// find all documents named john and at least 18
await MyModel.find({ name: 'john', age: { $gte: 18 } }).exec();
// executes, passing results to callback
MyModel.find({ name: 'john', age: { $gte: 18 }}, function (err, docs) {});
// executes, name LIKE john and only selecting the "name" and "friends" fields
await MyModel.find({ name: /john/i }, 'name friends').exec();
// passing options
await MyModel.find({ name: /john/i }, null, { skip: 10 }).exec();
最后但并非最不重要的是,如果檔案中有陣列并且您想通過定位陣列內的物件進行搜索,那么我們可以輕松完成此操作。
User.find(
{ "personalities.personalName": "something" }
function(err, result) {
if (err) {
res.send(err);
} else {
res.json(result);
}
}
);
或類似下面的回呼
User.find({ "personalities.personalName": "something" `})
.then(users=> //do something with users).catch(error=>console.log(error))`
uj5u.com熱心網友回復:
與您當前的嘗試一樣,$elemMatch使用了。我拿一個假設,你需要找到的所有檔案,其中有一個匹配的條目"personalName": "something"中personalities的陣列。
一個簡單的find就足夠了。
db.collection.find({
"personalities.personalName": "something"
})
這是Mongo 游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/319271.html
標籤:猫鼬 mongodb-查询
