Question: What I'm talking about is:

```
Meteor.users.findOne() =
{
  _id: "..."
  ...
  followers: {
    users: Array[], // ["someUserId1", "someUserId2"]
    pages: Array[]  // ["somePageId1", "somePageId2"]
  }
}

```

vs.

```
Followings.findOne() =
{
  _id: "..."
  followeeId: "..."
  followeeType: "user"
  followerId: "..."
}

```

I found second one totally inefficient because I need to use smartPublish to publish user's followers.

```
Meteor.smartPublish('userFollowers', function(userId) {
  var coursors = [],
      followings = Followings.find({followeeId: userId});
  followings.forEach(function(following) {
    coursors.push(Meteor.users.find({_id: following.followerId}));
  });
  return coursors;
});

```

And I can't filter users inside the iron-router. I cache subscriptions so there may be more users than I need.

I want to do something like this:

```
data: function() {
  return {
    users: Meteor.users.find({_id: {$in: Meteor.user().followers.users}})
  };
},

```

A bad thing about using nested arrays inside the Document is that if I've added an item to followers.users[], the whole array will be sent back to the client.

So what do you think? Is it better to keep such data inside the user Document so it'll become fat? May be it's a 'Meteor way' of solving such problems.

Answer: 
As I recall in a NodeJS environment you must do something like this to actually create a record: `db.get('collectionName').insert({..something...});` or `db.get('collectionName').save({...something...});` but you don't get to use the collection name as a property of db.

The line you're mentioning is only used in MongoDB shell, which is not Javascript.
I guess you're misunderstanding what's MongoDB shell and what's a MongoDB driver. 

So long story short MongoDB (driver) is not able to access an undefined property. 

**EDIT**

In response to your comment..

MongoDB JS driver's GitHub page pretty much points out how to insert a field and always uses the syntax I mentioned: <https://github.com/mongodb/node-mongodb-native>

As for what you're using in the shell it's pretty clear that you can't just use Javascript in a command shell. So I guess I'll point you to a place in which you can see in what language was MongoDB developed: <http://www.mongodb.org/> pretty much the first line says it's written in C++.

Hope this helps clarify your question
In JavaScript there is a way to define a function that will be executed when an undefined method is called.

Example:

```
var o = {
  __noSuchMethod__: function(id, args) { console.log(id, '(' + args.join(', ') + ')'); }
};

o.foo(1, 2, 3);
o.bar(4, 5);
o.baz();

// Output
// foo (1, 2, 3)
// bar (4, 5)
// baz ()

```

Note this is a non-standard feature and today only works in Firefox.

I do not know how MongoDB implemented this feature, but I'm just responding in order to report that can be done this way.

Fot more details see: <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/noSuchMethod>