我有一個名為 Users 的貓鼬模式:
let UserSchema = new mongoose.Schema({
firstname: {
type: String,
required: true,
},
lastname: {
type: String,
required: true,
},
houses: {
type: Map,
of: Array,
required:[true,"No Units Detected"]
},
gender: {
type: String,
required: true,
},
email: {
type: String,
required: true,
unique: true,
lowercase: true,
validate: (value) => {
return validator.isEmail(value);
},
},
這導致檔案被保存為:檔案 1:
{
firstname:"user1",
lastname:"user",
gender:"male",
email:"[email protected]",
houses: {
"New York" : ['house1','house2']
"Florida" : ['house1','house2']
}
}
檔案 2:
{
firstname:"user2",
lastname:"user",
gender:"female",
email:"[email protected]",
houses: {
"Florida" : ['house1']
"Texas" : ['house1']
}
}
模式的目的是列出每個用戶的房屋,即使用戶在多個州擁有多個房屋。我的問題是:是否有任何查詢可以用來列出處于某種狀態的用戶(這是物件內的鍵),例如:查詢 texas 將僅回傳 User 2,查詢 Florida 將回傳 user 1 和 user 1
uj5u.com熱心網友回復:
方法一:使用$exist
db.collection.aggregate([
{
$match: {
"houses.Texas": { $exists: true }
}
}
])
mongoplayground
方法二:使用$objectToArray
db.collection.aggregate([
{
$match: {
$expr: {
$ne: [
{
$filter: {
input: { $objectToArray: "$houses" },
as: "h",
cond: { $eq: [ "$$h.k", "Texas" ] }
}
},
[]
]
}
}
}
])
mongoplayground
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/465232.html
上一篇:嵌套陣列中的MongoDB查找
下一篇:過濾時貓鼬結果總是空的
