2015-09-27 2 views
3

Я ищу удобный способ проверить, существует ли объект в коллекции. Пока единственный способ, который я нашел этоПроверить наличие объекта в mongo с помощью gopkg.in/mgo.v2

type result interface{} 
var res result 

err := col.Find(bson.M{"title": "title1"}).One(&res) 
if err != nil { 
    if err.Error() == "not found" { 
     log.Println("No such document") 
    } else { 
     log.Println("err occured", err) 
    } 
} 

Я не хочу, чтобы создать переменный Рез, в случае, если существует объект, он может быть очень тяжелый документом с большим количеством полей. Я хотел было бы иначе, некоторые функции Check(), который просто возвращает булево значение .. В принципе мне нужно только знать, что объект уже хранится в коллекции, я не нужна сама

ответ

2

вы должны использовать $ существует

Синтаксис: {поле: {$ существует:}}

Для получения более подробной информации

http://docs.mongodb.org/manual/reference/operator/query/exists/

Спасибо, РОХИ t

+1

Мне нужно проверить, что объект с значением FIELD X уже существует; $ exists найдет объекты с FIELD независимо от их значения. И еще раз, мне нужно только знать, что объект уже находится в db, мне не нужен сам – Kaign

+0

Вы хотите, чтобы вы проверяли, существует ли поле с определенным значением в коллекции? –

+0

да, вы сформулировали это лучше, чем я сделал :) – Kaign

5
count, err = collection.Find(bson.M{field: value}).Count() 
+0

, пожалуйста, введите код в поле кода –

+0

ПРИМЕЧАНИЕ. Для этого вам нужно установить 'db.SetSafe (& mgo.Safe {})', чтобы он работал, иначе он всегда будет возвращать 0 и ноль! – dezza

Смежные вопросы