gpt4 book ai didi

mongodb - 为什么我的 mongodb 查询返回 0 个结果?

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:58 26 4
gpt4 key购买 nike

这是我的数据库集合: Documents
使用此 go 代码,我尝试获取所有参与故事或使用给定 ID 创建故事的用户。

func main() {
for stf.DB == nil {
}

collection := stf.DB.Collection("user")
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()

id, _ := primitive.ObjectIDFromHex("5cb4dd7e29d3dca573a73d4c")
fter := bson.M{"_id": id}

involvedFilter := bson.M{"stories_involved": fter}
createdFilter := bson.M{"stories_created": fter}

filter := bson.M{"$or": []bson.M{involvedFilter, createdFilter}}

cur, err := collection.Find(ctx, filter)
if err != nil {
log.Fatal(err.Error())
}

defer cur.Close(ctx)

for cur.Next(ctx) {
var result bson.M
err := cur.Decode(&result)

if err != nil {
log.Fatal(err.Error())
}
fmt.Println(result)
}
if err := cur.Err(); err != nil {
log.Fatal(err.Error())
}
}


该代码不输出任何错误,但也不输出任何对象...
提前感谢您的帮助!

最佳答案

您的查询转化为:

{"$or":[
{"stories_involved":{
"_id": ObjectId("5cb4dd7e29d3dca573a73d4c")}},
{"stories_created":{
"_id":ObjectId("5cb4dd7e29d3dca573a73d4c")}}
]}

这意味着它正在搜索带有嵌套文档的文档 即:

{stories_involved: {_id: <value>}}或者 {stories_created: {_id: <value>}} .

但是,集合中的文档包含嵌套文档数组 即:

{stories_involved: [{_id:<value>}]}或者 {stories_created: [{_id:<value>}]}

这就是您的查询没有返回任何值的原因(并且没有错误,因为查询语法是正确的)。

Querying a document nested in an array有两种方式使用 dot notation .如果你知道文档数组的索引,你可以只指定位置:

id, _ := primitive.ObjectIDFromHex("5cb4dd7e29d3dca573a73d4c")
involvedFilter := bson.M{"stories_involved.0._id": id}
createdFilter := bson.M{"stories_created.0._id": id}
filter := bson.M{"$or": []bson.M{involvedFilter, createdFilter}}
cur, err := collection.Find(ctx, filter)

如果不知道嵌套文档在数组中的索引位置,则将数组字段的名称,用点(.)和嵌套文档中的字段名称连接:

id, _ := primitive.ObjectIDFromHex("5cb4dd7e29d3dca573a73d4c")
involvedFilter := bson.M{"stories_involved._id": id}
createdFilter := bson.M{"stories_created._id": id}
filter := bson.M{"$or": []bson.M{involvedFilter, createdFilter}}
cur, err := collection.Find(ctx, filter)

另见 MongoDB: Query Documents

关于mongodb - 为什么我的 mongodb 查询返回 0 个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55696562/

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