gpt4 book ai didi

mongodb - 获取MongoDB中数组字段中给定元素的索引

转载 作者:IT老高 更新时间:2023-10-28 13:26:08 27 4
gpt4 key购买 nike

想想这个 MongoDB 文档:

{_id:123, "food":[ "apple", "banana", "mango" ]}

问题:如何获取mango在食物中的位置?

查询应该返回上面的2,而不是返回整个文档。

请出示有效的查询。

最佳答案

从 MongoDB 版本 3.4 开始,我们可以使用 $indexOfArray运算符返回可以在数组中找到给定元素的索引。

$indexOfArray 接受三个参数。第一个是以 $ 符号为前缀的数组字段的名称。

第二个是元素,第三个可选是开始搜索的索引。 $indexOfArray 如果未指定开始搜索的索引,则返回找到元素的第一个索引。


演示:

> db.collection.insertOne( { "_id" : 123, "food": [ "apple", "mango", "banana", "mango" ] } )
{ "acknowledged" : true, "insertedId" : 123 }
> db.collection.aggregate( [ { "$project": { "matchedIndex": { "$indexOfArray": [ "$food", "mango" ] } } } ] )
{ "_id" : 123, "matchedIndex" : 1 }
> db.collection.aggregate( [ { "$project": { "matchedIndex": { "$indexOfArray": [ "$food", "mango", 2 ] } } } ] )
{ "_id" : 123, "matchedIndex" : 3 }
> db.collection.aggregate( [ { "$project": { "matchedIndex": { "$indexOfArray": [ "$food", "apricot" ] } } } ] )
{ "_id" : 123, "matchedIndex" : -1 }

关于mongodb - 获取MongoDB中数组字段中给定元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33100750/

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