根据对象属性查询 Mongoose 文档
Posted
技术标签:
【中文标题】根据对象属性查询 Mongoose 文档【英文标题】:Query Mongoose Documents Based on Object Properties 【发布时间】:2015-08-08 17:50:06 【问题描述】:我有以下 Mongoose 架构:
var UserSchema = new Schema(
name: String,
age: Number,
...
tags: [
text: String,
...
]
);
还有以下数组:
var tagTexts = ['tall', 'small', 'green', 'blue'];
我想检索至少包含一个标签的所有用户文档,该标签具有在 tagTexts 中找到的 text 属性。
例如,如果我有以下用户和 tagTexts 数组
[
name: 'Bob',
age: 17,
...
tags: [
text: 'small',
...
]
,
name: 'Bill',
age: 29,
...
tags: [
text: 'dandelion',
...
,
text: 'oak',
...
]
]
var tagTexts = ['tall', 'small', 'green', 'blue'];
然后 Bob 会被检索到,但 Bill 不会被检索到。
【问题讨论】:
【参考方案1】:您可以使用$in
来匹配值数组,并使用点表示法来定位tags
数组的每个元素内的text
字段。任何匹配都会导致文档包含在结果中。
var tagTexts = ['tall', 'small', 'green', 'blue'];
User.find('tags.text': $in: tagTexts, function(err, users) ...);
【讨论】:
谢谢。我以前试过这个,但我使用了错误的语法,所以它不起作用。我已经更新了我的查询以反映您的建议,并且我得到了我想要的结果。谢谢,谢谢,谢谢! 这是在架构中组织数据的好方法,还是搜索大量用户/标签效率低? 感谢您的回答。像魅力一样工作!以上是关于根据对象属性查询 Mongoose 文档的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose:通过 findOneAndUpdate 查询使用嵌套对象数组的总和更新父子数据属性不起作用