gpt4 book ai didi

ruby-on-rails - 为什么 elem_match 返回 0 个元素?

转载 作者:行者123 更新时间:2023-12-03 15:10:39 26 4
gpt4 key购买 nike

我正在尝试从一组对象中获取一个记录结果,但是在遵循 Mongoid 文档之后我不知道还能尝试什么。

我有这个单一元素:

 > contacts
=> #<Contact _id: 55ace6bc6xx, device_fields: {"app_id"=>"55ace6bc65195efc8200xxxx"}, created_at: 2015-07-20 12:17:00
UTC, updated_at: 2015-07-20 12:17:00 UTC, name_first: "Kory",
name_last: "Funk", ...>

这个匹配器列表:

> apps = []
> apps << App.where(id: "55ace6bc65195efc8200xxxx").first.id
=> ["55ace6bc65195efc8200xxxx"]

这段代码试图获取匹配的元素:

> contacts.elem_match(device_fields: {:app_id.in => apps }).to_a
=> []
> contacts.elem_match(device_fields: { "app_id": "55ace6bc65195efc8200xxxx"}).to_a
=> []

为什么它返回一个空数组,它有一个匹配?

最佳答案

据官方mongodb manual

The $elemMatch operator matches documents that contain an array field

并且您试图将它与散列字段一起使用,所以您基本上误解了这个选择。所以没有匹配的对象。

你应该这样做:

contacts.where(:'device_fields.app_id'.in => apps).to_a

关于ruby-on-rails - 为什么 elem_match 返回 0 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31516624/

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