javascript - 在meteor中查询mongodb集合中子对象的属性

标签 javascript mongodb meteor

我想在可能包含多个 guest 对象的 guest 列表数组中搜索名称。该对象数组与其他属性一起存储在我的 Meteor 项目中名为“Guests”的 mongo 数据库集合中。

简单架构片段:

guestList: {
    type: [Object],
    label: "Guest List"
}

示例访客对象:

var newGuest = [{
    firstName: "John",
    lastName: "Doe"
},
{   
    firstname: "Jane",
    lastName: "Doe"
}];

它已成功插入到 SimpleSchema,我现在需要帮助的是,如果我的完整对象看起来像这样是集合,我如何搜索名称?

{
    guestList: newGuests,
    address: "123 4th St. NE",
    phone: "555-555-5555",
    email: "jon@doe.com"
}

现在假设我有多个条目,每个 guestList 属性中可能有多个客人,但我想获取其 guestListfirstName 为“Jane”的条目属性。

我尝试过 Guests.find({ guestList: { firstName : "Jane"} }).fetch(); 但我没有得到任何结果。

我也尝试过 Guests.find({guestList[0].firstName: "Jane"}).fetch(); 但也没有结果。

任何帮助将不胜感激!

最佳答案

听起来您正在寻找的是 $elemMatch查询运算符。看看怎么使用here也。我建议像这样编写您的查询:

Guests.find({
    guestList: {
        $elemMatch: {
            firstName: 'Jane'
        }
    }
});

您不使用指定的第一个查询的原因是它尝试匹配单个嵌入文档而不是文档数组。此外,您不使用指定的第二个查询的原因是因为它尝试仅匹配文档数组中的第一个嵌入文档,但显然您希望检查数组中的所有嵌入文档。

关于javascript - 在meteor中查询mongodb集合中子对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32172850/

相关文章:

PHP OOP 与 Javascript

javascript - 当存在 anchor 时触发背景颜色的 JS/Jquery 转换

javascript - onclick设置值输入

php - 在 javascript 中设置 cookie 值并用 php 显示它

java - mongodb 查询嵌入式文档键作为日期

node.js - Expressjs + Mongoose - 该网页不可用?

javascript - meteor 如何处理异步调用

javascript - Meteor 账户路由

ruby-on-rails - 获取 Rspec 错误没有使用 Mongoid 将 Symbol 隐式转换为 Integer

javascript - Meteor:search-source 未清除搜索