Hi All,
I have a weird problem. I am querying docs using below query:
query := bson.M{
"brandid": 1003,
"$or": []bson.M{
bson.M{
"st": bson.M{
"$exists": false,
},
},
bson.M{
"mt": bson.M{
"$gte": time.Date(2016, time.November, 10, 23, 0, 0, 0, time.UTC),
},
},
},
}
Then I am looping through the result and I am updating the "st" field, for example:
col.Update(tran.Id,bson.M{"$set":bson.M{"st":time.Now()}})
The Find query returns 12K documents when I do
, however when I loop through the result, the loop keeps going forever and after 12k documents, I start getting the same documents that I have already updated. Here is an example of the loop:
col := s.db.C("transactions")
data := col.Find(query)
c, _ := data.Count()
iter := data.Iter()
i := 0
RETRIEVER_LOOP:
for {
tran := Transaction{}
if !iter.Next(&tran) {
break RETRIEVER_LOOP
}
i++
fmt.Printf("\rDone docs: %v of ", i, c)
//DO some work here
col.Update(tran.Id,bson.M{"$set":bson.M{"st":time.Now()}})
}
Did anybody had a similar issue?
If I remove from the query
bson.M{
"st": bson.M{
"$exists": false,
},
},
thank everything works as expected
Thank,
Luke