gpt4 book ai didi

javascript - 在模型内的模型上使用 find

转载 作者:行者123 更新时间:2023-12-02 19:12:32 24 4
gpt4 key购买 nike

我正在尝试使用 Mongoose 查找方法来查找未知对象上的对象。这是更好解释的代码。

这是我的模型:

var Screen = new mongoose.Schema({
id : Number,
pid : Number,
uploaded : {type: Date, default: Date.now },
name : String,
url : String,
shorty : String
});

var User = new mongoose.Schema({
id : Number,
mail: { type : String, match : /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/ },
pass: String,
token: String,
inscDate: { type: Date, default: Date.now },
lastConnec: { type: Date, default: Date.now },
screens: [Screen],
lastIp : String,
valid : { type: Boolean, default : 0}
});

var UserModel = mongoose.model('users', User);
var ScreenModel = mongoose.model('screens', Screen);

所以问题是我的用户模型包含一系列屏幕。基本上我想在精确的屏幕上搜索未知用户。做这样的事情:

var query = UserModel.find({'screens.shorty' : shorty});
query.exec(function(err, screenR) {

});

但是这段代码崩溃了,而且我尝试过的其他类似代码除了空数组之外从未返回任何其他内容。我的搜索没有错误(我尝试复制精确的字符串)。

有什么可行的方法可以做到这一点吗?

最佳答案

如果您使用的是 MongoDB 2.2+,则可以使用 $ 投影运算符将 screens 过滤到与查询选择器匹配的第一个元素。

像这样:

var query = UserModel.findOne({'screens.shorty': shorty}, {'screens.$': 1});
query.exec(function(err, user) {
if (user) {
// user.screens[0] contains the first element with the matching shorty field
}
});

关于javascript - 在模型内的模型上使用 find,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13519178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com