6

I can successfully retrieve data from my mongoDB instance but need to re-use the objectID for a depending query.

The following code seems to get my entire object but NOT the id. What am I missing?

# Perform a query and retrieve data
mongoOBj <- m$find('{"em": "test@test.com"}')
tospig
  • 7,762
  • 14
  • 40
  • 79
DirkLX
  • 1,317
  • 1
  • 10
  • 16

3 Answers3

10

I realise this is an old question and OP has probably figured it out by now, but I think the answer should be

mongoOBj <- m$find(query = '{"em": "test@test.com"}', field = '{}') 

instead of

mongoOBj <- m$find(query = '{"em": "test@test.com"}', field = '{"_id": 1}')

In the second case, the result will be a data frame containing ONLY the IDs. The first line will result in a data frame containing the queried data, including the IDs.

By default, field = '{"_id": 0}', meaning _id is not part of the output.

Pavlova
  • 101
  • 1
  • 3
6

If you look at the documentation you see that the find method takes a field argument, where you specify the fields you want:

find(query = ’{}’, fields = ’{"_id" : 0}’, sort = ’{}’, skip = 0, limit = 0, handler = NULL, pagesize = NULL)

So in your case it will be something like

mongoOBj <- m$find(query = '{"em": "test@test.com"}', field = '{"_id": 1}')
tospig
  • 7,762
  • 14
  • 40
  • 79
1

FYI So the easiest way to get all fields is to do the query with field="{}". That will overwrite the default in the mongolite:: package find() arguments list.

It was driving me nuts for a little while too.