2016-05-19 3 views
2

Вот мой JSON файл:Как написать поиск MongoDB в golang с помощью МдО

[{ 
    "name": "chetan", 
    "age": 23, 
    "hobby": ["cricket", "football"] 
}, { 
    "name": "raj", 
    "age": 24, 
    "hobby": ["cricket", "golf"] 
}] 

Вот golang код, который я попробовал, но не работает, как ожидалось.

id:= "ket" 
c.EnsureIndexKey("hobby") 
err = c.Find(bson.M{"$hobby": bson.M{"$search": id,},}).All(&result) 

Это дает ошибку:

$hobby exit status 1

+0

Вы пытаетесь найти документы с хобби, которые содержат текст 'ket'? –

+0

да, я хочу найти, чье хобби содержит кет, как крикет в кете –

ответ

1

От $search Я предполагаю, что вы пытаетесь использовать текстовый индекс/поиск, но в вашем случае это не будет работать. Текстовый индекс не поддерживает частичные. Вы все равно можете использовать регулярное выражение для поиска этих документов, но, по его мнению, это не будет разумным выбором, если вы не сможете использовать индекс, который в вашем случае не произойдет.

Тем не менее, вы можете добиться того, что вы хотите с:

id := "ket" 
regex := bson.M{"$regex": bson.RegEx{Pattern: id}} 
err = c.Find(bson.M{"hobby": regex}).All(&result) 
+0

спасибо, сэр за то, что помог мне –