基于对象内数组中元素值的Meteor查询

时间:2018-03-27 22:45:42

标签: meteor

我是meteor和mongoDB的新手,并且一直在寻找这个问题的答案而没有任何运气。 我在MongoDB中有多个文档,类似于下面的文档:

{
    "_id" : ObjectId("5abac4ea0c31d26804421371"),
    "Points" : [
        {
            "Value" : 6.869752766626993,
            "Time" : 1522284528946
        },
        {
            "Value" : 3.9014587731230477,
            "Time" : 1522284543946
        },
        {
            "Value" : 1.2336926618519772,
            "Time" : 1522284558946
        },
        {
            "Value" : 6.504837583667155,
            "Time" : 1522284573946
        },
        {
            "Value" : 9.824138227740864,
            "Time" : 1522284588946
        },
        {
            "Value" : 9.707480757899235,
            "Time" : 1522284603946
        },
        {
            "Value" : 4.6122167850338105,
            "Time" : 1522284618946
        }
    ]
}

如何在meteor中实现一个查询,该查询返回一个数组,其中包含“Time”字段大于特定值的所有文档中的所有点?

1 个答案:

答案 0 :(得分:0)

正如Jankapunkt在他的评论中指出的那样,如果你创建了一个新的集合 Points ,它可能会容易得多,其中每个文档只包含 Value 时间属性。然后,给定的示例将成为七个单独的文档而不是单个数组。

然而,我们想要根据一些内在价值来查询文档,例如数组中对象的属性。

取自mongodb documentation on querying embedded documents,我们可以使用点符号。

  

如果您不知道嵌套在数组中的文档的索引位置,请连接数组字段的名称,并使用点(。)和嵌套文档中字段的名称。

例如您的问题(假设积分是您的收藏品的名称):

True if dict and key in dict else False;

在Meteor中几乎完全相同:

@api.model 
def create(self, vals):
record = super(Employee, self).create(vals) 
if record.name and record.birthday: 

    return self.env['hr.birthday'].create({
                                    'name': record.name,
                                    'birthday_date': record.birthday
                                            }) 
return record