mongodb morphia如何安全地从String数组中删除字符串

时间:2011-10-21 21:05:52

标签: arrays mongodb morphia

好的我有这个(初学者再次)

// ADD FRIEND TO FRIEND LIST   
Query<FriendList> query1 = mongo.createQuery(FriendList.class);   
query1.field("lowerCaseUserName").equal(on.lowerCaseUserName);  
query1.field("passwordHash").equal(on.passwordHash);
query1.field("uuid").equal(on.uuid);
UpdateOperations<FriendList>up1=mongo.createUpdateOperations(FriendList.class).add("friendList",buddyUuid,false);

我将朋友插入Array。 “friendList”是String Array 希望能够立即实现删除。

我可以编写相同的代码并将“.add”替换为removexxx ......吗? 我认为这是一个很好的想法,但也许不是:)

@Entity
public class FriendList {

    @Id private ObjectId id;

    public Date lastAccessedDate;

    @Indexed(name="uuid", unique=true,dropDups=true)  
    private String uuid;

    @Indexed(value=IndexDirection.ASC, name="lowerCaseUserName", unique=true,dropDups=true)  
    public String lowerCaseUserName;

    public String passwordHash = "";

    List<String> friendList;

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public List<String> getFriendList() {
        return friendList;
    }

    public void insertFriend(String friend) {
        this.friendList.add(friend);
    }
//  @PrePersist void prePersist() {
//      lastAccessedDate = new Date();
//  }
}

1 个答案:

答案 0 :(得分:1)

Query<FriendList> query1 = mongo.createQuery(FriendList.class);   
query1.field("lowerCaseUserName").equal(on.lowerCaseUserName);  
query1.field("passwordHash").equal(on.passwordHash);
query1.field("uuid").equal(on.uuid);
UpdateOperations<FriendList>up1=mongo.createUpdateOperations(FriendList.class).removeAll("friendList",buddyUuid);

这应该从列表中删除buddyUuid

如果您可以保证friendList包含唯一的UUID,那么您可以使用removeFirst || removeLast方法。

removeFirst/Last/All

希望这有帮助!