检查值是否存在于数组字段 mongoid rails
Check if value exist into array field mongoid rails
我在 mongodb 数据库中有一个组字段
"groups" : "[\"5514efcc6970640f40150100\", \"5514efcc6970640f40160100\", \"5514efcc6970640f40170100\", \"5514efcc6970640f40180100\"]
请建议查询以检查上述数据库数组中是否存在字段。
喜欢modelname.find(:groups=> 5514efcc6970640f40150100)
看起来您实际上在 groups
中有一个字符串,而不是一个数组。该字符串看起来像您在 Ruby 中的 BSON ObjectId 数组上调用了 inspect
并将该字符串化数组存储在 MongoDB.
中
这里的前导双引号:
⬇
"groups" : "[\"5514efcc6970640f40150100\", ...
⬆
告诉你你有一个字符串。在那个字符串中,你有一个看起来像字符串数组的东西,但它仍然是一个字符串。
如果这真的是你所拥有的,那么我认为你被正则表达式搜索困住了(这会很慢),比如:
Model.where(:groups => /"5514efcc6970640f40150100"/)
假定所有 groups
字符串的格式一致,并且它们实际上是十六进制字符串的字符串化数组。
如果是这种情况,那么我建议您立即修复数据库和代码,以便在 groups
.
中使用真正的数组
如果您的 groups
确实是一个十六进制字符串数组,例如:
"groups" : ["5514efcc6970640f40150100", ...
然后您可以像查询标量字段一样查询它,让 MongoDB 为您展开数组:
Model.where(:groups => '5514efcc6970640f40150100')
我在 mongodb 数据库中有一个组字段
"groups" : "[\"5514efcc6970640f40150100\", \"5514efcc6970640f40160100\", \"5514efcc6970640f40170100\", \"5514efcc6970640f40180100\"]
请建议查询以检查上述数据库数组中是否存在字段。
喜欢modelname.find(:groups=> 5514efcc6970640f40150100)
看起来您实际上在 groups
中有一个字符串,而不是一个数组。该字符串看起来像您在 Ruby 中的 BSON ObjectId 数组上调用了 inspect
并将该字符串化数组存储在 MongoDB.
这里的前导双引号:
⬇
"groups" : "[\"5514efcc6970640f40150100\", ...
⬆
告诉你你有一个字符串。在那个字符串中,你有一个看起来像字符串数组的东西,但它仍然是一个字符串。
如果这真的是你所拥有的,那么我认为你被正则表达式搜索困住了(这会很慢),比如:
Model.where(:groups => /"5514efcc6970640f40150100"/)
假定所有 groups
字符串的格式一致,并且它们实际上是十六进制字符串的字符串化数组。
如果是这种情况,那么我建议您立即修复数据库和代码,以便在 groups
.
如果您的 groups
确实是一个十六进制字符串数组,例如:
"groups" : ["5514efcc6970640f40150100", ...
然后您可以像查询标量字段一样查询它,让 MongoDB 为您展开数组:
Model.where(:groups => '5514efcc6970640f40150100')