我在查询中访问user.info.name.familyName时遇到问题。我对数据库设计和查询很新,我不知道它是否可能。
所以这是我的架构。也许它可能需要重新设计,以便我正在努力工作。
var UserSchema = mongoose.Schema({
username: {
type: String,
index: true,
required: true,
unique: true
},
password: {
type: String,
required: true
},
email: {
type: String,
required: true,
lowercase: true
},
emailVerified: {
type: Boolean,
default: false
},
info: {
name: {
givenName: String,
familyName: String,
},
address: {
street: String,
city: String,
state: String,
zipCode: String
},
primaryPhone: String,
cellPhone: String,
website: String,
licenseNumber: String,
title: String,
company: String
},
avatar: {
type: String,
default: '/images/avatar/default/contacts-128.png'
},
friends: [{ type: ObjectId, ref: User }],
friendRequests: [{ type: ObjectId, ref: User }]
});
我有一个搜索功能,目前通过用户名或电子邮件进行搜索并且工作正常,但我希望它也可以通过用户searchName或familyName进行搜索。这是搜索功能......
module.exports.search = function(searchValue, callback) {
var searchValue = new RegExp(`^${searchValue}`, 'i');
var query = {
$or: [
{username: searchValue},
{email: searchValue}
// {givenName condition here...}
]
}
User.find(query, callback).limit(10);
}
我尝试了这个......但它没有用
{info.name.givenName: searchValue}
我尝试了其他一些荒谬的事情,但他们也失败了......
总结一下我的问题,我如何重构架构或查询以便能够针对user.info.name.givenName检查searchValue?
答案 0 :(得分:0)
这样:
{'info.name.givenName': searchValue}
注意引号。
你很亲密:)